2011-06-24 33 views
4

我使用XmlDocument的解析XML文件,但似乎XmlDocument的總是讀取XML註釋的XML節點:的XmlDocument讀取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註釋嗎?

+1

小點:XmlDocument與C#無關。它是.NET的一部分,不是C#的一部分。 –

回答

6

不,但node.NodeType schould由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 /的XDocument:

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

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

它看起來應該是「哪裏n.NodeType!= XmlNodeType.Comment」? – icn

+0

@icn:謝謝,更正... – ChrFin

1

試試這個

 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. 
      } 
     }