C#Xml反序列化 - 保留子订单

时间:2011-03-09 09:15:04

标签: c# .net xml-serialization

我有一个看起来像这样的Xml(简化示例):

<childrenNode>
   <myClass1>
      <someValues />
   </myClass1>
   <myClass2>
      <someOtherValues />
   </myClass2>
   <myClass1>
      <someValues />
   </myClass1>
   <myClass2>
      <someOtherValues />
   </myClass2>
   <myClass1>
      <someValues />
   </myClass1>
</childrenNode>

解析它时,我使用的类看起来像这样:

public class childrenNode
{
   public myClass1[] myClass1 { get; set; }
   public myClass2[] myClass2 { get; set; }
}

这个问题是我放弃了订购。我需要知道第二个myClass1是数组的第三个项目。理想情况下,我将Xml序列化为类似的东西,以保持顺序:

public class childrenNode
{
   public object[] child { get; set; }
}

Xml由第三方应用程序输出,因此我无法更改其布局。

有关我有哪些替代方案的建议? Xml实际上很大,所以使用XmlReader解析它将会有很多工作。

2 个答案:

答案 0 :(得分:2)

您可以使用XmlElementAttribute msdn

映射节点
public class childrenNode
{
   [XmlElement("myClass1", typeof(myClass1))]
   [XmlElement("myClass2", typeof(myClass2))]
   public BaseNode[] nodes { get; set; }
}

public class BaseNode
{

}

public class myClass1: BaseNode
{
}

public class myClass2: BaseNode
{
}

答案 1 :(得分:0)