与 Json 合作至今。现在我得到一个 XML 作为数据源,我想使用 XML 属性将其反序列化为 C# 对象。我看到的问题是我只想从MSGData序列化 XML - 所以我将 DOCUMENT 设置为 XmlRootAttribute。目前没有错误 - 只是将属性设置为空。
这是我的 XML(我只需要具有正确属性的 C# 最少需要的类):
<?xml version="1.0" encoding="IBM862"?>
<DOCUMENT>
<MSGData>
<ITEMS>
<ITEM>
<ID>121</ID>
<Name>test</Name>
</ITEM>
<ITEM>
<ID>122</ID>
<Name>test1</Name>
</ITEM>
<ITEM>
<ID>122</ID>
<Name>test1</Name>
</ITEM>
</ITEMS>
</MSGData>
</DOCUMENT>
这就是我的课程的样子(忽略拼写错误 - 这不是复制+粘贴代码 - 它是自由文本):
<Xmlroot(ElementName="ITEM")]
public class Item
{
[XmlElement(ElementName="ID"])
public int ID {get; set;}
[XmlElement(ElementName="Name"])
public string Name {get; set;}
}
[Xmlroot(ElementName="ITEMS")]
public class Items
{
[XmlElement(ElementName="ITEM"]) //I think that here I should use XmlArray (see below)
//[XmlArray("ITEMS"]
IEnumerable<Item> Items {get; set;}
}
[XmlRoot(ElementName="MSGData")]
public class MSGData
{
[XmlElement(ElementName="ITEMS")]
public Items itemsInstance {get; set;}
}
当我阅读 XML 时,我使用 XmlRootAttribute 开始收集 DOCUMENT 节点内的数据:
XmlRootAttribute xRoot = new XmlRootAttribute("DOCUMENT");
XmlSerializer xmls = new XmlSerializer(typeof(MSGData), xRoot);
MSGData messageData = (MSGData)xmls.Deserialize(new
StringReader(response.Content.ReadAsStringAsync().Result));