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的长度。