Ura
Ura

Reputation: 2283

How to get Xmllint to read from stdin?

EDIT: clustat -x outputs an XML file and I want to parse out the active node. I don't think there is a way to do it without xpath so I created a temp xml file.

/usr/sbin/clustat -x > /tmp/clustat.xml
ACTIVENODE=$(xmllint --shell /tmp/clustat.xml <<< `echo 'cat //group/@owner'`|grep -v "^/ >"|cut -d= -f2|tr -d \")

Upvotes: 58

Views: 26657

Answers (1)

aiGuru
aiGuru

Reputation: 1180

I had a similar issue where I had to unzip an XML file then feed it to xmllint. The key is the "-" option which tells xmllint to read from stdin.

For example:

$ bzip2 -dc dierehabilitati00delagoog_meta.xml.bz2 | xmllint --format

would fail giving the "usage" for xmllint. Adding "-" worked:

$ bzip2 -dc dierehabilitati00delagoog_meta.xml.bz2 | xmllint --format -
<?xml version="1.0"?>
<metadata>
  <title>Die Rehabilitation im Strafrecht</title>
  <creator>Ernst Delaquis</creator>
  <mediatype>texts</mediatype>
  <collection>americana</collection>
</metadata>

Hope this helps.

Upvotes: 77

Related Questions