2013-04-02 68 views
0

當前正試圖創建一種方法來讀取XML文件,此時一次只能讀取50行,這將會增加以允許在程序中使用較大的文件。每次讀取一個xml文件50行

目前我正在試圖用下面的代碼來完成此操作。

List<dataclass.DataRecord> list = new List<dataclass.DataRecord>(); 
string filename = "FileLocation" 
XmlDocument testing = new XmlDocument(); 

//using (StreamReader streamreader = new StreamReader(filename)) 
using (XmlTextReader reader = new XmlTextReader(new StringReader(filename))) 
{ 
    while (reader.Read() != null) 
    { 
    for (int i = 0; i < 50; i++) 
    { 
    testing.Load(reader); 

    //list.add(line); 
    Console.WriteLine(testing); 
    //testing.Load(reader); 
    } 
    } 
} 

註釋行只是從以前的想法我用來實現我的目標和文件名已被取出,因爲我只是不喜歡那個網上下。

基本上此刻,我不斷收到以下錯誤:在根級別

數據是無效的。 1號線,位置1

所以我不知道如果我:

A.要對這個正確的方式。

B.是修復這個錯誤的唯一方法是圍繞「testing.load」的「根+ /根」標籤

希望有人能幫忙,謝謝。

+1

您應該將XML看作** **樹而不是**平面文件**。一條線在XML中沒有意義,如果只讀取50個「行」,則可以將**節點向上切割。你通過這樣做成就了什麼? – Belogix

+0

好的,生病給我看看,我是這樣做的新手。 – user2169674

+0

回答你在什麼即時通訊實現的問題,我只是試圖逐漸加載文件,而不是一個一個去。 – user2169674

回答

0

正如我在我的評論中解釋的,XML由節點組成,而您正在將它看作是帶有線條的平面文件。

有幾個Stackoverflow的問題與你正在嘗試做的事情相匹配。真正的問題是「如何加載大型XML文件」。答案是使用流,而不是在一個大塊中加載,然後從那裏可以找到大量有關使用XmlReader的資源。

兩個指針到其他SO文章:

C# and Reading Large XML Files

Reading large XML documents in .net

希望幫助!

+0

幫助很多,就像你張貼我也看這些鏈接以及從你的評論和pyfods答案的組合。 – user2169674

0

如果你只是想XML加載到XmlDocument的 - 爲什麼不

XmlDocument testing = new XmlDocument(); 
testing.Load(filename); 
+0

我知道我可以這樣做,但是,但該程序可能需要加載非常大的文件,所以這種加載文件的方法有希望應該是有效的 – user2169674

0

如果您的XML文件是非常大的,你最好使用某種拉解析器(解析標籤逐標籤,屬性的屬性等)而不是DOM解析器(在解析期間加載整個文檔,將其保存在內存中)。