C# 4.0 从XDocument中删除所有注释

C# 4.0 从XDocument中删除所有注释,c#-4.0,linq-to-xml,C# 4.0,Linq To Xml,我正在读XDocument。如何从XDocument中删除所有注释行 我试过了 doc.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove(); 但这只删除带有注释的第一级节点,而内部级节点保持原样 有没有办法删除所有注释行。我相信一定有!!!;) 任何解决方案。而不是其中(x=>x.NodeType==XmlNodeType.Comment)我只需使用of type(),如中所示 doc.Des

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

我试过了

 doc.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove();
但这只删除带有注释的第一级节点,而内部级节点保持原样

有没有办法删除所有注释行。我相信一定有!!!;)

任何解决方案。

而不是
其中(x=>x.NodeType==XmlNodeType.Comment)
我只需使用
of type()
,如中所示

doc.DescendantNodes().OfType<XComment>().Remove();
doc.degenantNodes().OfType().Remove();
但这两种方法都应该删除所有级别的注释节点

以下是一个例子:

XDocument doc = XDocument.Load("../../XMLFile1.xml");

doc.Save(Console.Out);

Console.WriteLine();

doc.DescendantNodes().OfType<XComment>().Remove();

doc.Save(Console.Out);
XDocument doc=XDocument.Load(“../../XMLFile1.xml”);
单据保存(控制台输出);
Console.WriteLine();
doc.degenantNodes().OfType().Remove();
单据保存(控制台输出);
对于一个示例,我得到了输出

<?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>

福巴
福巴

所以所有的评论都被删除了。如果您仍然存在问题,请发布示例,让我们重现问题。

尝试执行
递归操作。
。单次查询是否有任何解决方法?将在以后的thanx中解决