web-dev-qa-db-fra.com

Comment faire lire Xmllint à partir de stdin?

  • Je ne veux pas créer de fichier XML
  • J'ai besoin d'utiliser le --Shell avec cat pour créer des filtres
  • Je n'ai pas xpath dans ma version de xmllint, en utilisant libxml2-2.7.6-14.el6.x86_64

    xml|xmllint --Shell - <<< $(echo 'cat /')

    -:1: parser error : Start tag expected, '<' not found

EDIT: clustat -x Génère un fichier XML et je veux analyser le nœud actif. Je ne pense pas qu'il existe un moyen de le faire sans xpath, j'ai donc créé un fichier xml temporaire.

/usr/sbin/clustat -x > /tmp/clustat.xml
ACTIVENODE=$(xmllint --Shell /tmp/clustat.xml <<< `echo 'cat //group/@owner'`|grep -v "^/ >"|cut -d= -f2|tr -d \")
40
Dejan

J'ai eu un problème similaire où j'ai dû décompresser un fichier XML puis le nourrir xmllint. La clé est l'option "-" qui indique à xmllint de lire à partir de stdin.

Par exemple:

$ bzip2 -dc dierehabilitati00delagoog_meta.xml.bz2 | xmllint --format

échouerait en donnant "l'utilisation" de xmllint. L'ajout de "-" a fonctionné:

$ 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>

J'espère que cela t'aides.

51
aiGuru