You should try these tools :
xmlstarlet
(xmlstarlet page) : can edit, select, transform… Not installed by default, xpath1xmllint
(man xmllint): often installed by default withlibxml2-utils
, xpath1 (check my wrapper to have--xpath
switch on very old releases and newlines delimited output (v < 2.9.9)). Can be used as interactive shell with the--shell
switch.xpath
: installed via perl’s moduleXML::Xpath
, xpath1xml_grep
: installed via perl’s moduleXML::Twig
, xpath1 (limited xpath usage)xidel
(xidel): xpath3saxon-lint
(saxon-lint): my own project, wrapper over @Michael Kay’s Saxon-HE Java library, xpath3: using SaxonHE 9.6 ,XPath 3.x (+retro compatibility)
Examples:
xmllint --xpath '//element/@attribute' file.xml
xmlstarlet sel -t -v "//element/@attribute" file.xml
xpath -q -e '//element/@attribute' file.xml
xidel -se '//element/@attribute' file.xml
saxon-lint --xpath '//element/@attribute' file.xml