extract xml from the command line

I just discovered this morning this cool utility in my /bin directory : xmllint

You can use it to extract values from your xml files within your shell scripts


$ cat foo.xml


John


Jack


$ echo 'cat //emplist/emp[@no="1"]/ename/text()'|
xmllint --shell foo.xml |
sed -n 3p
John

I like this !

Published by Laurent Schneider

Oracle Certified Master

Join the Conversation

5 Comments

  1. sed -n 3p
    did not work for me
    sed -n 2p
    did work!

    …or use sed to delete the lines with the “/ > ” prompt?

    sed ‘/^\/ >/ d’

  2. you use /@attr
    $ echo 'cat //emplist/emp[@no="1"]/@no'|
    xmllint --shell foo.xml |grep '"'|
    cut -d'"' -f2
    1

    and to get the attribute name, use dir

    $ echo 'dir //emplist/emp[1]'|
    xmllint --shell foo.xml|
    awk '$1=="ATTRIBUTE"{print $2}'
    no

Leave a comment

Your email address will not be published.