我想得到abc的值,其名称为3,即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
不支持
答案 0 :(得分:1)
最后一个问题是我用命令wrok下面的单个倒置逗号(&#39;)。我不知道原因,通过命中来了解并尝试:)
如果您知道其背后的原因,请发表评论。
echo&#39; cat // abc [@name =&#34; 1&#34;] / properties / @ conn&#39; | xmllint --shell&#34; test.xml&#34;
注意:上面提到的xml只是我要运行的示例实际xml是复杂的结构。
答案 1 :(得分:0)
正常使用xmllint
,不用管道:
$ xmllint --xpath 'string(//abc[@name='1']/properties/@conn)' xml_file
conn1
请参阅string()
用于获取属性的值,如Getting attribute using XPath中所述。