1

我有以下 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,它将使用关于名称密钥的“包含”。

预期结果是“值/值”。

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

我期望:1

4

2 回答 2

1

我认为这会成功

/Root/Level[Name[1] = "John" and Key[1] = "Lennon"]/Value/Val[1]
于 2012-11-25T06:51:18.640 回答
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)
于 2012-11-25T14:19:33.630 回答