繁体   English   中英

使用 xmllint 从 xml 中获取多次出现的属性值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM