XmlDocument чтение XML-документа Комментарий Проблема - PullRequest
4 голосов
/ 24 июня 2011

Я использую XmlDocument для разбора XML-файла, но кажется, что XmlDocument всегда читает комментарии XML в виде узлов XML:

Мой код C #

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

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

}

Файл XML

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

Разве .NET не должен пропускать комментарии XML?

Ответы [ 3 ]

6 голосов
/ 24 июня 2011

Нет, но node.NodeType schould by XmlNodeType.Comment.
Если он не читает комментарии, вы также не можете получить к ним доступ, но вы можете сделать что-то вроде следующего, чтобы получить все "реальные узлы":

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
}

или без LINQ / XДокумент:

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

foreach (XmlNode node in xml.FirstChild.ChildNodes)
{
     if(node.NodeType != XmlNodeType.Comment)
     {
         //your code
     }
}
1 голос
/ 24 июня 2011

Попробуйте это

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

        foreach (XmlNode node in xml.FirstChild.ChildNodes) 
        {
            if(node.GetType() == XmlNodeType.Comment)
            {
               //Do nothing
            }
            else
            {
               //Your code goes here.
            }
       }
1 голос
/ 24 июня 2011

Посмотрите на XmlNodeType.Comment

...