XPath包含在两个节点上

时间:2012-11-25 06:45:55

标签: xml xpath

我有以下XML:

<Root>
 <Level>
    <Name>John</Name>
    <Key>Lennon</Key>
    <Value>
       <Val>1</Val>
    </Value>
 </Level>
 <Level>
    <Name>Fred</Name>
    <Key>Hi</Key>
    <Value>
       <Val>2</Val>
    </Value>
 </Level>
</Root>

我需要一个XPath,它将使用名称键的'包含'。

预期结果是'Value / Val'。

对于输入:姓名 - 约翰,钥匙 - 列侬

我期待:1

2 个答案:

答案 0 :(得分:1)

我认为这会解决问题

/Root/Level[Name[1] = "John" and Key[1] = "Lennon"]/Value/Val[1]

答案 1 :(得分:1)

使用

/*/*[Name='John'][Key='Lennon']/Value/Val

这将选择任何Val元素作为任何Value元素的子元素,该元素是具有子元素Name的元素的子元素,其字符串值为字符串“John”,并且有一个子Key,字符串值为字符串“Lennon:,那个(Value的父级)是XML文档顶部元素的子元素。

如果您只需要所选Val元素的字符串值,请使用:

string(/*/*[Name='John'][Key='Lennon']/Value/Val)

除此之外,如果知道任何Val值是一个数字,请使用:

number(/*/*[Name='John'][Key='Lennon']/Value/Val)