C # Xml Deserializing - saving child order

I have an Xml that looks something like this (simplified example):

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

For parsing, I use a class that looks something like this:

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

The problem is that I am losing order. I need to know that the second myClass1 is the third element of the array. Ideally, I would serialize Xml in such a way as to keep order:

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

Xml is output by a third-party application, so I have no chance to change its layout.

Any suggestions on what my alternatives are? Xml is actually massive, so parsing it with XmlReader will be a lot of work.

+3
source share
2 answers

You can map nodes to 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
{
}
+2
source

All Articles