Search code examples
xmllinuxshellunixxmllint

Get value of an attribute from xml for multiple occurrences using xmllint


I want to get value of conn of abc whose name is 3 i.e conn3

<abc name="1">
    <properties conn="conn1"/>
</abc>
<abc name="2">
    <properties conn="conn2"/>
</abc>
<abc name="3">
    <properties conn="conn3"/>
</abc>

currently i am doing

echo 'cat //abc/properties/@conn' | xmllint --shell "test.xml"

but it is returning conn1,conn2,conn3

I am trying with

echo 'cat //abc[@name='1']/properties/@conn' | xmllint --shell "test.xml"

but it is not returning anything

Can you please suggest where i am doing wrong. Note:Xpath not supported


Solution

  • Finally issue was with single inverted comma(') below command worked for me. I don't know the reason, came to know by hit and try :)

    Please comment if you know the reason behind it.

    echo 'cat //abc[@name="1"]/properties/@conn' | xmllint --shell "test.xml"
    

    Note: Above mentioned XML is only sample actual XML where I want to run is complex structure.