Xml XPath在两个节点上包含
我有以下XML:Xml XPath在两个节点上包含,xml,xpath,Xml,Xpath,我有以下XML: <Root> <Level> <Name>John</Name> <Key>Lennon</Key> <Value> <Val>1</Val> </Value> </Level> <Level> <Name>Fred</Name> <Key
<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>
约翰
列侬
1.
弗莱德
你好
2.
我需要一个XPath,它将使用关于Name和键的“contains”
预期结果为“值/Val”
输入:Name-John,Key-Lennon
我想:1我想这会奏效的
/Root/Level[Name[1] = "John" and Key[1] = "Lennon"]/Value/Val[1]
使用:
/*/*[Name='John'][Key='Lennon']/Value/Val
这将选择任何Val
元素,该元素是任何值的子元素
元素的子元素,该元素具有子名称
,该子元素的字符串值为字符串“John”,子键
的字符串值为字符串“Lennon:”,并且该子元素(该值的父元素
)是XML文档顶部元素的子元素
如果只需要所选Val
元素的字符串值,请使用:
string(/*/*[Name='John'][Key='Lennon']/Value/Val)
number(/*/*[Name='John'][Key='Lennon']/Value/Val)
除此之外,如果已知任何Val
值是一个数字,请使用:
string(/*/*[Name='John'][Key='Lennon']/Value/Val)
number(/*/*[Name='John'][Key='Lennon']/Value/Val)
是的,除了你可以删除所有三个“[1]”谓词“因为我们对可能的输入不太了解。谢谢@MichaelKay。您知道,我通常在SQLServerMS中测试XPath,SQL有自己的XPath子集。你知道一些测试XPath的好方法吗,比如sqlfiddle.com for SQL或jsfiddle.com for javascript?@RomanPekar,一个好的(不仅仅因为我写了它:)工具是XPath可视化工具。它是完全免费和开源的,可以在以下位置获得: