comment lire un fichier xml linux
J'ai un fichier xml ci-dessous, j'ai besoin de "fr" à l'aide de certains de commande unix.
<void method="put">
<string>LANGUAGE</string>
<string>en</string>
</void>
à l'aide de commande ci-dessous (obtenu à partir d'un lien dans google),
sed -n '/string/{s/.*<string>//;s/<\/string.*//;p;}' Locale.xml
Je suis sortie comme
LANGUAGE
en
j'ai donc utilisé
sed -n '/string/{s/.*<string>//;s/<\/string.*//;p;}' Locale.xml | tail -1
Mais est-il une option dans sed en qui je peux avoir une deuxième valeur seulement?
- À l'aide d'un analyseur XML pourrait être une meilleure option.
- exact le cas d'utilisation de xpath. si vous avez besoin de l'envelopper avec un script shell, vous pouvez utiliser l'outil
xmllint
avec--xpath
. Je ne peux pas proposer d'autres avant de voir votre structure du document. N'essayez pas d'utiliser awk/sed/grep sur un xml, si vous voulez que votre script pour être stable. eh bien, vous pouvez les utiliser même si, pour un rapide et sale coup/test. - XML n'est pas un langage régulier, ce qui signifie que vous ne pouvez pas la hauteur de ses structures avec des expressions régulières efficacement.
- Voir Grep et Sed Équivalent pour XML Ligne de Commande de Traitement
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser cette
sed
,Utilisation
xmlstarlet
.Ou de l'utilisation
xmllint
.Plus sur XPath.
Vous pouvez rechercher
LANGUAGE
et l'imprimer ligne suivante:Ou de recherche pour
string
et imprimer la dernière:À l'aide de xsh: