.net 在c#中解析xml:将xmlreader和linq组合成xml
我必须用C#解析大型XML文件。我使用LINQ转换XML。我有一个这样的结构.net 在c#中解析xml:将xmlreader和linq组合成xml,.net,xml,linq-to-xml,large-files,xmlreader,.net,Xml,Linq To Xml,Large Files,Xmlreader,我必须用C#解析大型XML文件。我使用LINQ转换XML。我有一个这样的结构 <root> <node></node> <node></node> </root> 我想使用XmlReader在每个节点上循环,并使用linqtoxml获取每个节点并处理它 因此,我的内存中只有当前节点。您可以这样做: string path = @"E:\tmp\testxml.xml"; using (var
<root>
<node></node>
<node></node>
</root>
我想使用XmlReader
在每个节点上循环,并使用linqtoxml获取每个节点并处理它
因此,我的内存中只有当前节点。您可以这样做:
string path = @"E:\tmp\testxml.xml";
using (var reader = XmlReader.Create(path))
{
bool isOnNode = reader.ReadToDescendant("node");
while (isOnNode)
{
var element = (XElement)XNode.ReadFrom(reader);
// Use element with Linq to XML
// ...
isOnNode = reader.ReadToNextSibling("node");
}
}
你真正的问题是什么?@msarchet,我想问题很清楚。。。他希望在每个
元素上使用Linq to XML,但使用XmlReader
来获取这些元素,以避免在内存中加载整个文档可能会重复它的工作,但在某些情况下,我有一个错误:无法将“System.XML.Linq.XText”类型的对象强制转换为“System.XML.Linq.XElement XmlReader”类型。我不知道为什么,所以我在强制转换之前做了一个测试(我测试节点类型)。但我不知道我是否输了results@bobosh,我不确定是什么导致了这个问题。。。您可以发布导致问题发生的XML文档的子集吗?它始终是同一个模板。在使用xdocument循环节点“node”之前,我没有发现问题。在两千张唱片中,我丢失了三张唱片。这张唱片上没有什么变化。他们一定有什么不同,否则他们的行为会是一样的。。。