2010-12-11 66 views
1

我一直在試圖找到一種使用XmlReader/XmlWriter編寫XML的簡單方法。我真的不喜歡使用「IXmlSerializable」接口,但我沒有選擇我的一些數據類。如何使用XmlWriter/XmlReader讀取/寫入複雜對象

不管怎麼說,我想要做的是相當簡單:

private MyClass myObject; 
public void WriteXml(XmlWriter writer) 
{ 
    writer.WriteObject(myObject); // <-- this method doesn't exists 
} 

所以,我發現2解決方法:

  1. 寫我自己的日常手動編寫我的對象。很自然.Net已經做到了。
  2. 使用StringWriter創建一個新的序列化器並使用WriteValue(string)方法。

我還沒有測試過第二,但我認爲它可能會工作(不確定是因爲ReadValue結果)。

那麼我的問題是:我錯過了重要的東西還是唯一的方法?還是有更好的方法來處理?

謝謝。

+0

你有沒有看看LINQ to XML?這是一點或工作,但工作的一種享受。 – Pieter 2010-12-11 01:38:10

+0

是的,我知道這個想法,但從未使用它。但在這裏,我的問題是,我的複雜對象有許多子對象,每個對象都定義了XmlAttributes。所以我需要閱讀這些屬性。我只是不想寫盲目的元素。 – Sauleil 2010-12-11 01:41:24

回答

2

玩過之後,我發現一些很簡單的東西。這是我與那些誰是想知道如何固定我的問題(閱讀和元素類似),打碼:

public static void WriteElement(XmlWriter writer, string name, object value) 
    { 
     var serializer = new XmlSerializer(value.GetType(), new XmlRootAttribute(name)); 
     serializer.Serialize(writer, value); 
    } 

我不知道我爲什麼複雜的問題,但它不能更比這更簡單。

0

嘗試使用XmlDocument類。它使用XmlNode作爲輕鬆寫出XML的基礎。您也可以序列化一個類,或者使用DataSet類寫出xml,或者將其讀回到數據集或XmlDocument類型結構中。