从 ASP Net Web API POST 请求中删除空的 xml 标记
Posted
技术标签:
【中文标题】从 ASP Net Web API POST 请求中删除空的 xml 标记【英文标题】:Remove empty xml tag from ASP Net Web API POST Request 【发布时间】:2021-11-10 06:11:06 【问题描述】:我想从 ASP.NET Core WEB API 中基于 XML 的 POST 请求中删除空 XML 标记。空 XML 标记困扰我使用 XmlSerializerFormatters反序列化 XML 到模型。
<?xml version = "1.0" encoding="UTF-8"?>
<DetailAssessmentRequest>
<CaseId></CaseId>
...
<LeisureTimeActivities>
<LeisureTimeActivity>1</LeisureTimeActivity>
<LeisureTimeActivity/> //want to remove this
<LeisureTimeActivity>2</LeisureTimeActivity>
<LeisureTimeActivity/> //want to remove this
</LeisureTimeActivities>
<LeisureTimeActivityOthers></LeisureTimeActivityOthers> //want to remove this
...
<Observation>Comments</Observation>
</DetailAssessmentRequest>
我已经在我的Startup.cs
services.AddMvc()
.AddXmlSerializerFormatters()
.AddXmlDataContractSerializerFormatters();
这是我的模型:
[Serializable]
public class DetailAssessmentRequest
public int CaseId get; set;
...
[XmlArray("LeisureTimeActivities"), DefaultValue(null)]
[XmlArrayItem("LeisureTimeActivity")]
public List<int> LeisureTimeActivities get; set;
public string LeisureTimeActivityOthers get; set;
...
public string Observation get; set;
【问题讨论】:
嗨@Md。 Asaduzzaman,它对我有用,你能分享你的模型设计吗?你的 asp.net core 版本是什么? @Rena,我已经添加了我的模型并且正在使用 3.1 版。谢谢 【参考方案1】:这是一个您可以关注的工作演示:
var mySerializer = new XmlSerializer(typeof(DetailAssessmentRequest));
//To read the file, create a xml string.
var xmlstring = System.IO.File.ReadAllText("XMLFile.xml");
//Parse to XDocument and remove the empty or null value
var document = XDocument.Parse(xmlstring);
document.Descendants()
.Where(e => e.IsEmpty || String.IsNullOrWhiteSpace(e.Value))
.Remove();
// Call the Deserialize method and cast to the object type.
var myObject = (DetailAssessmentRequest)mySerializer.Deserialize(document.CreateReader());
【讨论】:
感谢您的合作。但我需要一个更通用的解决方案,它可以处理任何基于 XML 的 POST 请求,而与模型无关。我有很多其他模型应该以通用方式处理。再次感谢。以上是关于从 ASP Net Web API POST 请求中删除空的 xml 标记的主要内容,如果未能解决你的问题,请参考以下文章
本地 Javascript Fetch Post 请求失败,调用 ASP.NET Core 2.2 Web API。 CORS 已启用
在 ASP.NET MVC 5 控制器中使用 POST 从 dotnet Core Web API 下载文件
400 仅在启用 cors 时响应 asp.net web api POST 请求