I am working on reading XDocument. How can I remove all commented lines from XDocument.
I have tried with
doc.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove();
But this removes only first level nodes with comments and inner level nodes remains as it is.
Is there any way to remove all commented lines. I believe there must be!!! ;)
Any Solutions.
Instead of the Where(x => x.NodeType == XmlNodeType.Comment)
I would simply use OfType<XComment>()
, as in
doc.DescendantNodes().OfType<XComment>().Remove();
but both approaches should remove comment nodes at all levels.
Here is an example:
XDocument doc = XDocument.Load("../../XMLFile1.xml");
doc.Save(Console.Out);
Console.WriteLine();
doc.DescendantNodes().OfType<XComment>().Remove();
doc.Save(Console.Out);
For a sample I get the output
<?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>
so all comments have been removed. If you continue to have problems then post samples allowing us to reproduce the problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With