【发布时间】:2016-09-11 13:35:50
【问题描述】:
我想重写一个没有某些节点的大型 xml。 我正在尝试使用 system.xml.xmlreader 逐行读取 XML 文件(100 MB,无法将其全部读取到内存中) - 努力寻找一种读取其中部分内容的方法,将它们写到单独的xDocument,然后将该 xDocument 保存到磁盘。
我一直在想的是这样的:
using (XmlReader reader = XmlReader.Create(_xml_path))
{
using (XmlWriter writer = XmlWriter.Create(@"filteredxml.xml"))
{
reader.MoveToContent();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name != "EL_TO_BE_REMOVED")
{
//writer.WriteNode(reader.ReadOuterXml());
}
}
}
}
}
但是 reader.ReadOuterXml() 只是转到第一个元素并将其所有后代写入文件,而不让我过滤我希望忽略的元素。
【问题讨论】:
-
在以下帖子中查看我的答案:stackoverflow.com/questions/34274568/…
标签: c# .net xml linq-to-xml