读取xml节点属性

我有一个像这样的节点的xml文档, 我想要做的是获取文档中存在的每个ITEM节点的所有id的属性值。

那么,我该怎么做呢?

编辑:我尝试过这种方式并没有用:

 XmlDocument Doc = new XmlDocument(); Doc.Load("example.xml"); XmlNodeList nodeList = Doc.SelectNodes("/ITEM"); foreach (XmlNode node in nodeList) { string id = node.Attributes["id"].Value; Console.WriteLine(id); } 

您应该在调用SelectSingleNode()时使用XmlNamespaceManager ,因为您的XML确实包含一个命名空间:

 var doc = new XmlDocument(); doc.Load("example.xml"); XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable); ns.AddNamespace("anyname", "http://tempuri.org/zitem.xsd"); foreach (XmlNode node in doc.SelectNodes("//anyname:ITEM", ns)) { Console.WriteLine(node.Attributes["id"].Value); } 

这就是你没有结果的原因。

我的代码与你的代码的不同之处在于我使用//所以不是从文档的根开始,而是使用双正斜杠//指示XPath求值程序查找XML文档中的任何位置。

这是我的example.xml作为示例:

             

以下是我的阅读方式:

 var doc = new XmlDocument(); doc.Load("example.xml"); foreach (XmlNode node in doc.SelectNodes("//ITEM[@id]")) { Console.WriteLine(node.Attributes["id"].Value); } 

使用单斜杠,上面的XPath将如下所示:

 /root/items/ITEM 

我也使用[@id]来确保ITEM元素具有ID属性,但如果您知道它们都具有ID属性,则不需要。