我正在阅读XDocument。如何从XDocument中删除所有注释行?
我尝试过以下方法:
doc.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove();
但是这只删除了带有注释的第一级节点,内部级别节点保持不变。
是否有任何方法可以删除所有的注释行。我相信一定有!;)
任何解决方案。
我正在阅读XDocument。如何从XDocument中删除所有注释行?
我尝试过以下方法:
doc.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove();
但是这只删除了带有注释的第一级节点,内部级别节点保持不变。
是否有任何方法可以删除所有的注释行。我相信一定有!;)
任何解决方案。
我会简单地使用 OfType<XComment>()
,而不是 Where(x => x.NodeType == XmlNodeType.Comment)
。
doc.DescendantNodes().OfType<XComment>().Remove();
但是这两种方法都应该在所有层级上移除注释节点。
这里有一个例子:
XDocument doc = XDocument.Load("../../XMLFile1.xml");
doc.Save(Console.Out);
Console.WriteLine();
doc.DescendantNodes().OfType<XComment>().Remove();
doc.Save(Console.Out);
对于一个样本,我得到输出结果
<?xml version="1.0" encoding="ibm850"?>
<!-- comment 1 -->
<root>
<!-- comment 2 -->
<foo>
<!-- comment 3 -->
<bar>foobar</bar>
</foo>
<!-- comment 4 -->
</root>
<!-- comment 5 -->
<?xml version="1.0" encoding="ibm850"?>
<root>
<foo>
<bar>foobar</bar>
</foo>
</root>
所有评论都已被删除。如果您继续遇到问题,请发布示例,使我们能够复制问题。