C# xml反序列化
XML反序列化很方便,示例:
[XmlRoot(Root = "result")]
public class UniMsgSetResult
{
[XmlAttribute("resultCode")]
public int resultCode;
[XmlElement("uniMsgSet")]
public UniMsgSet uniMsgSet;
}
<result resultCode="0">
<UniMsgSet>...</UniMsgSet>
</result>
集合类型示例:
[XmlRoot("result")]
public class GetDiskInnerResult
{
public string parentCatalogID; //String32 待查询目录的父目录ID。如果当前目录为root,则父目录ID为空。
[XmlArray("catalogList"), XmlArrayItem("catalogInfo")]
public List<CatalogInfo> catalogList;// CatalogInfo[] 查询节点下的目录列表
[XmlArray("contentList"), XmlArrayItem("contentInfo")]
public List<ContentInfo> contentList; // ContentInfo[] 查询节点下的内容列表
}
<result>
<parentCatalogID>1</parentCatalogID>
<catalogList>
<catalogInfo>...</catalogInfo>
<catalogInfo>...</catalogInfo>
</catalogList>
<contentList>
<contentInfo>...</contentInfo>
<contentInfo>...</contentInfo>
</contentList>
</result>
如果要为集合实体添加属性:
In order words, add an attribute to an object element after xml serialization,
If you want something like,
<Rats count=“2″>
<Rat>little rat</Rat>
<Rat>old rat</Rat>
</Rats>
The C# code is
[XmlType(“Rats”)]
public class Rats
{
[XmlAttribute(“count”)]
public int Count { get; set; }
[XmlElement(“Rat”)] // now the array element will be as same as the object element Rats.
public string[] Rat { get; set; }
}
Traditional xml array serialization would get the extra element for the array itself.
[XmlType(“Rats”)]
public class Rats
{
[XmlAttribute(“count”)]
public int Count { get; set; }
[XmlArray(“Rats”)]
[XmlArrayItem(“Rat”)]
public string[] Rat { get; set; }
}
<Rats count=“2″>
<Rats>
<Rat>little rat</Rat>
<Rat>old rat</Rat>
</Rats>
</Rats>
参见
http://www.codemeit.com/xml/c-xmlserializer-add-an-attribute-to-an-array-element.html