从大型XML文件中删除节点

我有一个很大的XML文档可以使用XmlDocument加载。 我需要通过一个节点的每个孩子,并检查它是否违反条件,然后相应地删除,最后保存文档。

<root>
<node id="1">
<child delete="false"/>
</node>
<node id="2">
<child delete="true"/>
</node>
</root>

例如我想要删除节点2,并且此过程必须重复数百次。

任何帮助,将不胜感激。 谢谢。

编辑可能有人解释我如何去做这件事。


您可以使用XmlReader来顺序读取您的xml( ReadOuterXml可能对您的情况一次有效地读取整个节点)。 然后使用XmlWriter写出你想保留的所有节点。


请参阅本文比较xml解析方法的性能 - http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html

XmlReader在这里成为赢家。


请注意,未经测试,我还没有使用XDocument/XElements一段时间,所以在这里可能会出现拼写错误

XDocument xdoc = XDocument.Load("pathtofile.xml");
IEnumerable<XElement> elementsToDelete = xdoc.Descendants("node")
   .Where(node => node.Descendants("child")
       .Where(child => child.Attribute("delete") != null && 
       child.Attribute("delete").Value.ToLower() == "true"));
foreach(XElement element in elementsToDelete)
    element.Remove();

xdoc.Save("pathtonewfile.xml");
链接地址: http://www.djcxy.com/p/64741.html

上一篇: Deleting nodes from large XML files

下一篇: displaying a "dynamic" table