XML : Manipulation avec xmllint et trang
Dans le cadre de mon travail, je suis amené à manipuler des fichiers XML assez volumineux sur lesquels je dois effectuer des requêtes. J’étais donc à la recherche d’une solution rapide à mettre en oeuvre permettant d’isoler certaine parties de ces fichiers XML. De plus je n’ai pas nécessairement accès au schéma XSD de ce dernier.
J’ai trouvez mon bonheur avec « xmllint« . C’est un outil en ligne de commande qui permet entre autre de réaliser des requêtes XPath. Pour la partie génération du schéma XSD, j’ai opté pour un outil du nom de « trang » et enfin, j’utilise qxmledit pour visualiser de manière graphique le schéma XSD généré.
Afficher le fichier XML (xmllint)
Xmllint effectue ces sorties sur la sortie standard. Il est donc possible de chaîner plusieurs commandes via des tubes. Pour récupérer la sortie dans un fichier, on redirigera la sortie standard vers le fichier de notre choix.
Formater le fichier XML (suppression des retours à la ligne, indentation…) :
xmllint --format fichier.xml |
Afficher une version HTML du fichier :
xmllint --htmlout fichier.xml |
Effectuer des requêtes XPath (xmllint)
XPath est un langage appartenant à la sphère XML qui permet d’isoler certaines partie d’un document XML répondant à certains critères (bref, on fait des requêtes…).
La syntaxe xmllint est la suivante :
xmllint --xpath "expression xpath" fichier.xml |
Généré un schéma XSD à partir d’un fichier XML (trang)
Trang est disponible à l’URL suivante : http://jing-trang.googlecode.com/files/trang-20081028.zip. Pour l’installer il suffit de décompresser le fichier sur votre poste. Pour ma part, j’utilise un dossier « bin » à la racine de mon compte afin de stocker tous mes utilitaires.
Pour générer le fichier « schemaFichier.xsd » correspondant au schéma utilisé par le fichier « fichier.xml », il suffit de tapper la commande suivante :
java -jar ~/bin/trang.jar fichier.xml schemaFichier.xsd |
Visualiser de manière graphique un schéma XSD (qxmledit)
L’écriture de requêtes XPath est beacoup plus simple si l’on a sous les yeux une représentation graphique du schéma XSD correspondant a la structure des données. Après recherche sur le net, je suis tombé sous « qxmledit« .
Pour les distribution ARCH et Manjaro, cet outil est disponible sous AUR, mais la version proposée n’est plus à jour. J’ai posté un commentaire permettant de modifier le fichier de build afin d’utiliser la dernière version.
J’en profite pour donner la procédure ci-dessous :
- installer le paquet via « aur »
yaourt -S qxmledit |
- yaourt retourne une erreur en disant qu’il n’arrive pas à accèder aux sources. On va donc corriger tout cela en éditant le fichier « /tmp/yaourt-tmp-XXXX/aur-qxmledit/PKGBUILD ». (XXX représente votre login). Remplacer les premières lignes du fichier avec celles données ci-dessous :
pkgname=qxmledit pkgver=0.8.14 pkgrel=1 pkgdesc="Simple Qt XML editor and XSD viewer" arch=('i686' 'x86_64') url="http://code.google.com/p/qxmledit/" license=('GPL3' 'LGPL3') depends=('qt5-svg' 'qt5-xmlpatterns' 'desktop-file-utils') install="$pkgname.install" source=("http://sourceforge.net/projects/qxmledit/files/QXmlEdit-$pkgver/qxmledit-$pkgver-src.tgz/download") md5sums=('1fe8296c200a36229a512ee0e97fbbdf') |
- lancer la compilation
makepkg |
- installer qxmledit
sudo pacman -U qxmledit-0.8.14-1-x86_64.pkg.tar.xz |
Cela devrait fonctionné.
Cet article XML : Manipulation avec xmllint et trang est apparu en premier sur Carnet de vol.