[英]Get value of an attribute from xml for multiple occurrences using xmllint
我想获得名称为 3 的 abc 的 conn 值,即 conn3
<abc name="1">
<properties conn="conn1"/>
</abc>
<abc name="2">
<properties conn="conn2"/>
</abc>
<abc name="3">
<properties conn="conn3"/>
</abc>
目前我正在做
echo 'cat //abc/properties/@conn' | xmllint --shell "test.xml"
但它正在返回 conn1,conn2,conn3
我正在尝试
echo 'cat //abc[@name='1']/properties/@conn' | xmllint --shell "test.xml"
但它没有返回任何东西
你能建议我哪里做错了。 Note:Xpath
不支持Note:Xpath
最后的问题是下面的单引号(')对我有用。 我不知道原因,通过命中和尝试才知道:)
如果您知道背后的原因,请发表评论。
echo 'cat //abc[@name="1"]/properties/@conn' | xmllint --shell "test.xml"
注意:上面提到的 XML 只是我想要运行的复杂结构的实际 XML 示例。
正常使用xmllint
,无需管道:
$ xmllint --xpath 'string(//abc[@name='1']/properties/@conn)' xml_file
conn1
请参阅string()
用于获取属性的值,如使用 XPath 获取属性中所述。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.