0

我正在尝试从 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.

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

4

3 回答 3

2

它应该是

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

所以,

/Message/Head/Sender[@Identifier]Identifier如果它有一个属性只会选择发件人

/Message/Head/Sender[@Identifier='id']Identifier仅当 Sender 具有带值的属性时才会选择id

于 2012-11-29T08:48:34.933 回答
1

这是评估给定 XML 的 Xpath 的绝妙工具

转到此链接http://www.xmltoolbox.com/并尝试将您的 xml 粘贴到文本区域并将光标移动到您想要的节点 Xpath.Xpath 将在下面生成

于 2012-11-29T08:46:07.927 回答
-1
 XmlIO xml = new XmlIO(xmlPath);
                ProductName = xml.SelectNodeValue(@"//PRODUCTINFO/Application/@ProductName");
                IDictionary<string, string> keyValList = xml.SelectNodesList(@"//PRODUCTINFO/Application/Parameters");

看一看

于 2012-11-29T08:47:16.267 回答