2013-04-02 44 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解析器(在解析期间加载整个文档,将其保存在内存中)。