Skip to main content
 首页 » 编程设计

c#之XmlSerializer之将不同元素反序列化为相同元素的集合

2024年01月29日28lyj

我有以下 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;}