2012-01-30 18 views
0

我有一個XML文件,我必須反序列化。 文件看起來是這樣的如何在多個元素有一個孩子時序列化/反序列化xml?

<root> 
    <node1> 
    <node2> 
     <child1> 
     <infoNode1 attr="value"/> 
       . 
       . 
       . 
     </child1> 
     <child2> 
     . 
     . 
     </child2> 
    </node2> 
    </node1> 
</root> 

只有child1包含的信息。我現在反序列化的方式是每個節點都有一個單獨的類,但是我喜歡只有一個類node2,因爲所有數據都包含在那裏。

有什麼簡單的方法可以跳過/root/node1?我是否必須爲此執行自己的反序列化?

謝謝。

編輯:

我用於執行反序列化

string path = "file.xml"; 
RootClass projectDef = null; 

XmlSerializer serializer = new XmlSerializer(typeof(RootClass)); 

StreamReader reader = new StreamReader(path); 
projectDef = (RootClass)serializer.Deserialize(reader); 
reader.Close(); 
+0

你能發佈執行反序列化的代碼嗎? – Seb 2012-01-30 12:12:14

回答

3

序列化/反序列化代碼是用於書面方式和讀取對象,或對象的層次結構。州。所以你需要讓所有的節點完全支持序列化。

但是,如果您只想讀取xml並將其解析爲對象,則不必使用序列化。

  • 您可以使用LINQ for XML來解析文件並創建新對象。
  • 可以使用XPath選擇node2元素並從節點迭代器創建新對象。
  • 您可以實現IXmlSerializable並跳過ReadXml和WriteXml上不需要的節點。
+0

我確實相信LINQ for XML對我來說是最好的方法,因爲我只是從xml文件讀取實例化對象,而不是將該類序列化爲xml文件。 – Adrian 2012-01-30 12:26:28