我有一系列变量类型,例如:
abc1A, abc1B, abc3B, ...
xyz1A, xyz2A, xyz3C, ...
data1C, data2A, ...
以多种xml格式存储:
<area name="DataMap">
<int name="number" nullable="true">
<case var="abc2,abc3,abc5">11</case>
<case var="abc4,abc6*">8</case>
<case var="data1,xyz7,xyz8">22</case>
<case var="data3A,xyz{9},xyz{5A,5B,5C}">24</case>
<case var="xyz{6,4A,4B,4C}">20</case>
<case var="other01">15</case>
</int>
</area>
我希望查询像 xyz5A 这样的实例映射到什么。查询应该返回 24,但我不知道它在 xml 节点中的引用是否像“xyz4A”那样显式,或者通过像“xyz4*”这样的通配符,或者像上面那样在花括号中。
这会查询该行上的字符串并将成功返回命中:
xpath '/area[@name="DataMap"]/int[@name="number"]/case[contains(@var,"xyz")][contains(@var,"5A")]'
但它也返回一个不正确的 data5A 命中:
xpath '/area[@name="DataMap"]/int[@name="number"]/case[contains(@var,"data")][contains(@var,"5A")]'
是否存在解析上述不一致(但我认为是有效的)xml 的 xpath/其他查询构造?我似乎只能查询显式字符串匹配与通配符和花括号格式。