【发布时间】:2017-01-13 17:43:03
【问题描述】:
我正在尝试使用 ASP.NET C# 来使用第 3 方 API,该 API 返回的结果如下例所示,我被子对象的名称递增的事实绊倒了:
<Results>
<Count>3</Count>
<Result1>
<Id>1</Id>
<Property1>value</Property1>
<Property2>value</Property2>
...
<PropertyN>value</PropertyN>
</Result1>
<Result2>...properties...</Result2>
<Result3>...properties...</Result3>
</Results>
我的 C# 类如下所述,通过一些研究,我假设我必须实现 IXmlSerializable 以某种方式处理这个问题:
public class Results : IXmlSerializable
{
[XmlElement("Count")]
public int Count { get; set; }
public List<Result> ResultItems { get; set; }
}
这是 XML 的常见模式吗?有人对如何序列化它有任何想法吗?我不经常使用 XML(主要是 JSON),所以在此先感谢。
【问题讨论】:
-
您可以通过实现 IXmlSerializable 来实现。有关示例,请参阅How to Implement IXmlSerializable Correctly。但您也可以为此使用
XDocument.Parse。在我看来,它更容易处理。 SO中有几个条目可以使用XDocument.Parse -
这是一种奇怪的 XML 风格,反序列化很痛苦,有一个多余的
Count,可以很容易地从数据中推断出来。根据之前的 cmets,我会选择XDocument.Parse(srcData).Root.Elements().Where(el=>Regex.IsMatch(el.Name,@"Result\d+"))...//etc
标签: c# .net xml deserialization