parse - ¿Cómo hacer que Xmllint lea desde stdin?
xmllint xpath (1)
- No quiero crear un archivo XML
- Necesito usar el --shell con cat para crear filtros
No tengo xpath en mi versión de xmllint, usando
libxml2-2.7.6-14.el6.x86_64
xml|xmllint --shell - <<< $(echo ''cat /'')
-:1: parser error : Start tag expected, ''<'' not found
EDIT: clustat -x
genera un archivo XML y quiero analizar el nodo activo. No creo que haya una forma de hacerlo sin xpath, así que creé un archivo temporal de XML.
/usr/sbin/clustat -x > /tmp/clustat.xml
ACTIVENODE=$(xmllint --shell /tmp/clustat.xml <<< `echo ''cat //group/@owner''`|grep -v "^/ >"|cut -d= -f2|tr -d /")
Tuve un problema similar en el que tuve que descomprimir un archivo XML y luego alimentarlo a xmllint . La clave es la opción "-" que le dice a xmllint que lea desde stdin .
Por ejemplo:
$ bzip2 -dc dierehabilitati00delagoog_meta.xml.bz2 | xmllint --format
fallaría dando el "uso" para xmllint. Añadiendo "-" funcionó:
$ 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>
Espero que esto ayude.