我有以下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
答案 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)