c#-4.0 - 从XDocument删除所有评论

标签 c#-4.0 linq-to-xml

我正在阅读XDocument。如何从XDocument删除所有注释行。

我尝试过

 doc.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove();

但是,这仅删除具有注释的第一级节点,而内部级节点保持原样。

有什么办法可以删除所有注释行。我相信一定有!!! ;)

任何解决方案。

最佳答案

代替Where(x => x.NodeType == XmlNodeType.Comment),我将只使用OfType<XComment>(),如

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>

因此所有评论均已删除。如果您仍然遇到问题,请发布样本以使我们重现问题。

关于c#-4.0 - 从XDocument删除所有评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21952718/

相关文章:

c# - 搜索文件的最有效方法

c# - Linq 从未在 XDocument 中找到元素

c# - LINQ-to-XML:选择特定节点值

c# - Mono "This XmlWriter does not accept Text at this state Prolog."中的 XDocument 保存错误

c# - EF 5 过滤任何列 - 扩展方法?

java - .Net 4 垃圾收集

.net - 在 Oracle Merge 语句的 Using 子句中指定参数

.net - 使用linq2xml订购xml文件

c# - 保存 XDocument 而不将其存储在内存中

c# - 使用 lambda 表达式连接 3 个表?