如何从XmlDocument中删除所有注释标记

Fil*_*urt 22 .net c# xmldocument

我将如何从XmlDocument实例中删除所有注释标记?

有没有比检索XmlNodeList更好的方法并迭代这些?


    XmlNodeList list = xmlDoc.SelectNodes("//comment()");

    foreach(XmlNode node in list)
    {
        node.ParentNode.RemoveChild(node);
    }
Run Code Online (Sandbox Code Playgroud)

Gui*_*ume 29

加载xml时,可以使用XmlReaderSettings

XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("...", settings);
xmlDoc.Load(reader);
Run Code Online (Sandbox Code Playgroud)

在现有实例上,您的解决方案看起来很好.


Ant*_*nes 5

不管怎么说,虽然我倾向于首先将节点放在List中.

我不确定.NET实现,XmlNodeList但我知道以前的MSXML实现以惰性方式加载列表,过去上面的代码最终会以某种方式失败,因为DOM树被修改为列表是枚举的.

 foreach (var node in xml.SelectNodes("//comment()").ToList())
   node.ParentNode.RemoveChild(node);
Run Code Online (Sandbox Code Playgroud)