GNU/Linux >> Tutoriales Linux >  >> Linux

Linux Bash XMLLINT con XPATH

Mi favorito es xmlstarlet porque parece ser más poderoso que xmllint:

xmlstarlet sel -t -v '/resources/item[@id="index.php"]/description/text()' en.xml

cuál es la mejor manera de apuntar a un elemento específico y luego profundizar en su elemento secundario

La expresión XPath correcta para hacer esto es:

/resources/item[@id="index.php"]/description/text()

En lenguaje sencillo:comience desde el nodo del documento hasta el elemento del documento resources , a su hijo item , pero solo si el valor de id el atributo es "index.php", en su hijo description y recuperar su valor textual.

Uso xmllint para validar documentos XML, pero nunca para expresiones de ruta. En un shell bash (al menos con Mac OS) hay una herramienta aún más simple para evaluar expresiones XPath, llamada "xpath":

$ xpath en.xml '/resources/item[@id="index.php"]/description/text()'

Entonces, se obtiene el siguiente resultado:

Found 1 nodes:
-- NODE --
DESCRIPTION

Si aún prefiere xmllint, utilícelo de la siguiente manera:

$ xmllint --xpath '/resources/item[@id="index.php"]/description/text()' en.xml > result.txt

De forma predeterminada, --xpath implica --noout , lo que evita que xmllint genere el archivo XML de entrada. Para que la salida sea más legible, redirijo la salida a un archivo.

$ cat result.txt 
DESCRIPTION

Linux
  1. Analizando el historial de Bash en Linux

  2. Uso de modificadores de palabras con el historial de Bash en Linux

  3. Comando JQ en Linux con ejemplos

  4. Bash -c con parámetros posicionales?

  5. ¿Distribución de Linux con solo busybox y bash?

Comando wc Linux con ejemplos

Comando ip de Linux con ejemplos

Comando de historial en Linux (Bash History)

Shell Scripting Parte I:Primeros pasos con bash scripting

15 comandos ps de Linux con ejemplos

Comando Bash Echo explicado con ejemplos en Linux