使用xmlstarlet显示的xpath语句,它不支持字符串锚点的结束,并选择' aaa'和' bbb'。如何构造xpath语句以匹配以998结尾的属性?
-v "../Property[contains(@Name, '998$')]
<Object>
<Property Name="1230-02324998">
<Value>aaa</Value>
</Property>
<Property Name="3223-99824993">
<Value>bbb</Value>
</Property>
</Object>
答案 0 :(得分:1)
contains
函数没有任何正则表达式支持。使用Property[substring(@Name, string-length(@Name) - 2) = '998']
。
答案 1 :(得分:0)
试过这个:xmlstarlet sel -B -t -m&#34; // Object&#34; -v&#34; ..属性[substring(@Name,string-length(@Name) - 2)=&#39; 998&#39;]&#34;答案应该是:&#34; aaa&#34;,但它没有用。
在shell中输入问题的答案时请务必小心。 Martin Honnen没有告诉你用..
开始表达,这使得表达式无效。
鉴于您的XML输入存储在名为&#34; object.xml&#34;的XML文档中:
$ xml sel -B -t -m "Object" -v "Property[substring(@Name, string-length(@Name) - 2) = '998']" object.xml
aaa