2011-03-09 36 views
3

我有一個XML,看起來像這樣(簡化的例子):C#的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; } 
} 

這個問題是我失去了訂購。 I.e我需要知道第二個myClass1是數組的第三項。理想情況下,我想序列化XML轉換爲這樣的事情,以保持排序:

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

的XML是由第三方應用程序輸出,所以我也沒有改變其佈局的機會。

我有什麼替代方案的任何建議? Xml實際上非常龐大,因此使用XmlReader解析它將是一項很大的工作。

回答

2

自定義序列,您可以與XmlElementAttributemsdn

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 
{ 
} 
+0

感謝節點映射,得到它的工作。 – BlueVoodoo 2011-03-09 09:49:48