使用c#获取XPAth的xml属性

时间:2012-11-29 08:44:03

标签: c# xml xpath

我正在尝试从XML获取属性,但我收到错误:

  

表达式必须评估为节点测试

我是XPath的新手。

XML文件示例:

<Message>
   <Head>
      <Sender Identifier="id" ref=""/>
   </Head>
</Message>

代码:

XPathDocument xDoc = new XPathDocument("documentName.xml");
XPathNavigator nav = xDoc.CreateNavigator();
XPathNodeIterator xpathNode = nav.Select("/Message/Head/Sender/[@Identifier]");
//This is where I get the error.

而且我也不确定如何显示属性值。

3 个答案:

答案 0 :(得分:2)

应该是

/Message/Head/Sender[@Identifier]
                    ^
                    |->no need of / here since Identifier is an attribute of sender

所以,

/Message/Head/Sender[@Identifier]只会选择Sender,如果它具有Identifier属性

/Message/Head/Sender[@Identifier='id']只会选择发件人,如果它具有值为Identifier的{​​{1}}属性

答案 1 :(得分:1)

这是评估给定XML的Xpath的精彩工具

转到此链接http://www.xmltoolbox.com/并尝试将xml粘贴到textarea中并将光标移动到您希望在下面生成Xpath.Xpath的节点

答案 2 :(得分:-1)

 XmlIO xml = new XmlIO(xmlPath);
                ProductName = xml.SelectNodeValue(@"//PRODUCTINFO/Application/@ProductName");
                IDictionary<string, string> keyValList = xml.SelectNodesList(@"//PRODUCTINFO/Application/Parameters");

看看