9

Are there any utilities similar to xpath for parsing XML files that would be natively available on a RedHat server?

Similar questions have been answered elsewhere, but none of the tools listed are on the server.

update: xmllint is installed, and man xmllint indicates that it can parse xml files, but it is not clear that this gives me the ability to extract a string from a specific node.

5 Answers 5

7

Try xmllint and the --xpath option:

<xml>
  <hello>world!</hello>
</xml>

$ xmllint --xpath '//hello/text()'
world!
2
  • 1
    Too bad that the "--xpath" option is only available on RedHat 7, which was not around when this question was posted.
    – chutz
    Jan 3, 2015 at 14:50
  • Workaround for earlier versions of xmllint: stackoverflow.com/a/38199367/185196 Nov 4, 2016 at 19:20
5

If, given this XML

$ cat a.xml
<a>
  <b>Hello</b>
  <b>World</b>
</a>

You want to be able to do

$ ./xpath //a/b a.xml
Hello
World

then you could just cut & paste this:

$ cat xpath
#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;

my $parser = XML::LibXML->new();
my $document = $parser->parse_file($ARGV[1]);
my @nodes = $document->findnodes($ARGV[0]);
for my $node (@nodes) {
  print $node->textContent, "\n";
}

You should be able to install the XML::LibXML module using perl -MCPAN -e 'install XML::LibXML'

1
4

XMLStarlet is in EPEL.

4

xsltproc (command line interface to libxslt) is always available on RHEL.
usage: xsltproc xsl_stylesheet xml_file.

0

On RHEL 7

yum install libxml2

gives you

xmllint

and it can parse XML files

# xmllint 
Usage : xmllint [options] XMLfiles ...
        Parse the XML files and output the result of the parsing

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .