xpath 表达式通配符
xpath expression wild-cards
我需要在以下 xpath 中指定通配符
Field[@name="/Root/Table[i]/FirstName"]
基本上,"i" 是一个变量,它可以有一个 GUID 或一个 运行 数字。我想选择所有基本上具有属性模式
的元素
"/Root/Table[*]/FirstName"
即以“/Root/Table[”开头,以“]/FirstName”结尾。关于如何做到这一点有什么想法吗?
这是一个有效负载示例:
<Package>
<Input>
<Data id="36e9f0fe3f8d4508ac20710e07cfddd4">
<Input>
<Field name="/Root/Table[1]/FirstName">Thomas</Field>
</Input>
</Data>
</Input>
</Package>
您应该可以使用 starts-with()
和一个临时的 ends-with()
来做到这一点(因为 XPath 1.0 实际上没有 ends-with()
函数):
//*[starts-with(@name, '/Root/Table[') and
substring(@name, string-length(@name) - 11 + 1) = ']/FirstName']
这里,11
是]/FirstName
的长度。
我需要在以下 xpath 中指定通配符
Field[@name="/Root/Table[i]/FirstName"]
基本上,"i" 是一个变量,它可以有一个 GUID 或一个 运行 数字。我想选择所有基本上具有属性模式
的元素"/Root/Table[*]/FirstName"
即以“/Root/Table[”开头,以“]/FirstName”结尾。关于如何做到这一点有什么想法吗?
这是一个有效负载示例:
<Package>
<Input>
<Data id="36e9f0fe3f8d4508ac20710e07cfddd4">
<Input>
<Field name="/Root/Table[1]/FirstName">Thomas</Field>
</Input>
</Data>
</Input>
</Package>
您应该可以使用 starts-with()
和一个临时的 ends-with()
来做到这一点(因为 XPath 1.0 实际上没有 ends-with()
函数):
//*[starts-with(@name, '/Root/Table[') and
substring(@name, string-length(@name) - 11 + 1) = ']/FirstName']
这里,11
是]/FirstName
的长度。