2011-03-31 52 views
0

我正在使用XML記錄數據流。我知道,有更好的數據格式,但我們有我們的理由!按順序編寫XML

通常我會使用XmlDocument在內存中存儲xml數據,然後寫出整個事情。這在這裏沒有什麼幫助,因爲我們記錄數據流的時間沒有被指定,並且可能不會在任何足夠短的時間段內被修復,以便不會耗盡內存。

最好的方法是什麼?

謝謝。

回答

3

那麼,你可以使用XmlWriter。棘手的一點是知道何時關閉文檔 - 在這之前,它不會是有效的XML;在完成之後,你不能再追加它。

請注意,您不必使用XmlWriter直接。例如,使用LINQ to XML(我的首選XML API; XmlDocument etc類更好),您可以創建作者,寫出任何「標題」信息(例如容器的開始標記),然後創建XElement對象對於每個要寫入的值,請致電element.WriteTo(writer)

樣品的編號:

using System; 
using System.Xml; 
using System.Xml.Linq; 

class Test 
{ 
    static void Main() 
    { 
     using (XmlWriter writer = XmlWriter.Create("test.xml")) 
     { 
      writer.WriteStartDocument(); 
      writer.WriteStartElement("log"); 
      writer.WriteStartElement("entries"); 

      for (int i = 0; i < 10; i++) 
      { 
       XElement element = new XElement("entry", "Entry " + i); 
       element.WriteTo(writer); 
      } 
      writer.WriteEndElement(); 
      writer.WriteEndElement(); 
      writer.WriteEndDocument(); 
     } 
    } 
} 
+0

感謝Jon,我會看看Linq的東西 - 我沒有意識到還有另一個XML Api! – Nick 2011-03-31 15:57:27

+0

@Nick:它是在.NET 3.5中引入的。如果您仍然使用.NET 2.0或3.0,則需要使用其他方法 - 但可能仍然涉及到XmlWriter。 – 2011-03-31 16:02:30

+0

不,我們現在在3.5,謝謝! – Nick 2011-04-07 08:19:11

1

XmlWriter提供了一種快速,非緩存,僅向前裝置產生流或包含XML數據文件。