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

标签 c# .net xml xml-serialization xml-deserialization

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

相关文章:

java - C#数组[,]转Java,具体数组的概念

c# - 抛出的异常不会停止应用程序

c# - Web 应用程序和网站中的 app_data 文件夹有什么区别?

c# - 如果以本地管理员身份运行,如何 checkin C#

.net - HashSet<T> 和 List<T> 有什么区别?

xml - PowerShell 设置 XML 值#text

xml - 使用纯 AS3 创建 Android manifest xml

xml - xpath - if else 结构

c# - 如何使用 TrueType 自定义嵌入字体在 WebBrowser 控件中显示内容?

.net - 接口(interface)的 Msil 元数据包括 "Extends : 01000000 [TypeRef]"- 01000000 是什么意思?