我有这个XML:
<Header>
<Reference>
<Identifier>BatchProcessed</Identifier>
<DateTime>2011-08-15T05:12:00+10:00</DateTime>
</Reference>
</Header>
<Header>
<Reference>
<Identifier>Running</Identifier>
<DateTime>2011-08-15T05:12:00+10:00</DateTime>
</Reference>
</Header>
我正在尝试使用XPath查询在Identifier中找出此值“BatchProcessed”。
请指正。这就是我在查询中所拥有的但它无法正常工作:
//Header[Identifier='BatchProcessed']
答案 0 :(得分:2)
标识符位于Reference内部,因此您需要将其添加到XPath中。任
//Header[Reference/Identifier='BatchProcessed']
或
//Header[.//Identifier='BatchProcessed']
答案 1 :(得分:1)
我没有测试过这个,但是......
//Header/Reference/Identifier/text() == 'BatchProcessed'
答案 2 :(得分:1)
试试这个:
//Header[contains(.//Identifier, 'BatchProcessed')]
它读取,“在根目录下的任何地方找到一个Header元素,它有一个名为Identifier的后代元素,在其文本节点中包含'BatchProcessed'。
你必须要小心使用元素中的文本,因为空格有时可以通过你关闭,特别是如果你开始在那里发表评论。这就是为什么我使用“包含”而不是简单的相等 - 即使相等对你的特定文档也适用。在我看来,最好将标识符作为属性,因为你不能将注释放入属性中。