總結:node
一、Xml中的註釋也被看成節點元素;spa
示例XMLFile1.xml:code
<?xml version="1.0" encoding="utf-8" ?> <News> <!--{標題註釋}--> <NewsTitle>{標題1}</NewsTitle> <NewsList> <!--{標題列表註釋}--> <NewsDetailTitle>{詳細標題1}</NewsDetailTitle> <NewsDetailName>{詳細名稱}</NewsDetailName> </NewsList> </News>
C#解析代碼:xml
private void button1_Click(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load("XMLFile1.xml"); // 根節點 XmlNode node = doc.DocumentElement; // 遍歷根節點的子節點 foreach (XmlNode childNode in node.ChildNodes) { // 【注意1:把根節點中的註釋當成子節點】 //if (childNode.NodeType != XmlNodeType.Comment) // 判斷不等於註釋時 //{ textBox1.Text += childNode.InnerText; //} // 遍歷根節點的孫節點 foreach (XmlNode item in childNode.ChildNodes) { // 【注意2:把根節點中的子節點的註釋當成孫節點】 textBox2.Text += item.InnerText; } } }
效果圖:對象
二、若是不要註釋這個節點元素,能夠根據XmlNodeType這個枚舉類型來判斷。blog
// 摘要: // 指定節點的類型。 public enum XmlNodeType { // 摘要: // 若是未調用 Read 方法,則由 System.Xml.XmlReader 返回。 None = 0, // // 摘要: // 元素(例如,<item>)。 Element = 1, // // 摘要: // 特性(例如,id='123')。 Attribute = 2, // // 摘要: // 節點的文本內容。 Text = 3, // // 摘要: // CDATA 節(例如,<![CDATA[my escaped text]]>)。 CDATA = 4, // // 摘要: // 實體引用(例如,#)。 EntityReference = 5, // // 摘要: // 實體聲明(例如,<!ENTITY...>)。 Entity = 6, // // 摘要: // 處理指令(例如,<?pi test?>)。 ProcessingInstruction = 7, // // 摘要: // 註釋(例如,<!-- my comment -->)。 Comment = 8, // // 摘要: // 做爲文檔樹的根的文檔對象提供對整個 XML 文檔的訪問。 Document = 9, // // 摘要: // 由如下標記指示的文檔類型聲明(例如,<!DOCTYPE...>)。 DocumentType = 10, // // 摘要: // 文檔片斷。 DocumentFragment = 11, // // 摘要: // 文檔類型聲明中的表示法(例如,<!NOTATION...>)。 Notation = 12, // // 摘要: // 標記間的空白。 Whitespace = 13, // // 摘要: // 混合內容模型中標記間的空白或 xml:space="preserve" 範圍內的空白。 SignificantWhitespace = 14, // // 摘要: // 末尾元素標記(例如,</item>)。 EndElement = 15, // // 摘要: // 因爲調用 System.Xml.XmlReader.ResolveEntity() 而使 XmlReader 到達實體替換的末尾時返回。 EndEntity = 16, // // 摘要: // XML 聲明(例如,<?xml version='1.0'?>)。 XmlDeclaration = 17, }
也就是以下代碼:utf-8
private void button1_Click(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load("XMLFile1.xml"); // 根節點 XmlNode node = doc.DocumentElement; // 遍歷根節點的子節點 foreach (XmlNode childNode in node.ChildNodes) { // 【注意1:把根節點中的註釋當成子節點】 if (childNode.NodeType != XmlNodeType.Comment) // 判斷不等於註釋時 { textBox1.Text += childNode.InnerText; } // 遍歷根節點的孫節點 foreach (XmlNode item in childNode.ChildNodes) { // 【注意2:把根節點中的子節點的註釋當成孫節點】 if (item.NodeType != XmlNodeType.Comment) // 判斷不等於註釋時 { textBox2.Text += item.InnerText; } } } }
效果圖以下:文檔