GNU/Linux >> Tutoriels Linux >  >> Linux

Linux Bash XMLLINT avec XPATH

Mon préféré est xmlstarlet car il semble être plus puissant que xmllint :

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

la meilleure façon de cibler un élément spécifique, puis d'accéder à son élément enfant

L'expression XPath correcte pour ce faire est :

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

En clair :commencez par le nœud de document, jusqu'à l'élément de document resources , sur son enfant item , mais seulement si la valeur de id l'attribut est "index.php", sur son enfant description et récupérer sa valeur textuelle.

J'utilise xmllint pour valider les documents XML, mais jamais pour les expressions de chemin. Dans un shell bash (au moins avec Mac OS), il existe un outil encore plus simple pour évaluer les expressions XPath, appelé "xpath":

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

Ensuite, le résultat suivant est obtenu :

Found 1 nodes:
-- NODE --
DESCRIPTION

Si vous préférez toujours xmllint, utilisez-le de la manière suivante :

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

Par défaut, --xpath implique --noout , ce qui empêche xmllint de générer le fichier XML d'entrée. Pour rendre la sortie plus lisible, je redirige la sortie vers un fichier.

$ cat result.txt 
DESCRIPTION

Linux
  1. Analyser l'historique de Bash sous Linux

  2. Utilisation de modificateurs de mots avec l'historique Bash sous Linux

  3. Commande JQ sous Linux avec exemples

  4. Bash -c avec des paramètres positionnels ?

  5. Supprimer le mot de passe saisi dans l'invite de mot de passe masqué (Linux) avec un raccourci

Commande Linux wc avec exemples

Commande Linux ip avec exemples

Commande d'historique sous Linux (historique de bash)

Shell Scripting Partie I :Premiers pas avec les scripts bash

15 Commande Linux ps avec exemples

La commande Bash Echo expliquée avec des exemples sous Linux