我有以下 XML 部分,我无法更改其架构。 NUMBER、REGION、MENTION、FEDERAL 是列:
<COLUMNS LIST="20" PAGE="1" INDEX="reg_id">
<NUMBER WIDTH="3"/>
<REGION WIDTH="60"/>
<MENTION WIDTH="7"/>
<FEDERAL WIDTH="30"/>
</COLUMNS>
我想反序列化为public List<Column> Columns {get;set;}
属性(property)。所以元素名称将转到 Column.Name。列类:
public class Column
{
//Name goes from Element Name
public string Name {get;set;}
[XmlAttribute("WIDTH")]
public int Width {get;set;}
}
XmlSerializer 类是否可行?
最佳答案
您可以对一个属性使用多个 XmlElements:
[XmlElement("NUMBER")]
[XmlElement("REGION")]
[XmlElement("MENTION")]
[XmlElement("FEDERAL")]
public List<Column> Columns {get;set;}
甚至可以为不同的标签名称指定不同的类:
[XmlElement(ElementName = "One", Type = typeof(OneItem))]
[XmlElement(ElementName = "Two", Type = typeof(TwoItem))]
public List<BaseItem> Items {get;set;}
关于c# - XmlSerializer - 将不同元素反序列化为相同元素的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2874680/