XmlDocument reading XML Document comment Issue

icn picture icn · Jun 24, 2011 · Viewed 9.7k times · Source

I am using XmlDocument to parse xml file, but it seems that XmlDocument is always reading xml comments as a xml nodes:

My C# code

XmlDocument xml = new XmlDocument();
xml.Load(filename);

foreach (XmlNode node in xml.FirstChild.ChildNodes) {

}

Xml file

<project>
    <!-- comments-->
    <application name="app1">
        <property name="ip" value="10.18.98.100"/>
    </application>
</project>

Shouldn't .NET skip XML comments?

Answer

Christoph Fink picture Christoph Fink · Jun 24, 2011

No, but node.NodeType schould by XmlNodeType.Comment.
If it wouldn't read the comments you also couldn't access them, but you can do something like the following to get all "real nodes":

XDocument xml = XDocument.Load(filename);
var realNodes = from n in xml.Descendants("application")
                where n.NodeType != XmlNodeType.Comment
                select n;

foreach(XNode node in realNodes)
{ 
    //your code
}

or without LINQ/XDocument:

XmlDocument xml = new XmlDocument();
xml.Load(filename);

foreach (XmlNode node in xml.FirstChild.ChildNodes)
{
     if(node.NodeType != XmlNodeType.Comment)
     {
         //your code
     }
}