已知值属性的XPath查询

时间:2011-08-16 03:39:35

标签: c# xml xpath

我有这个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']

3 个答案:

答案 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'。

你必须要小心使用元素中的文本,因为空格有时可以通过你关闭,特别是如果你开始在那里发表评论。这就是为什么我使用“包含”而不是简单的相等 - 即使相等对你的特定文档也适用。在我看来,最好将标识符作为属性,因为你不能将注释放入属性中。