Seiner Unhandlichkeit zum Trotz haben sich XML-Formate als Konfigurationsdateien für viele Softwarekomponenten etabliert, zum Beispiel bei beim Java-Servern wie Tomcat und JBoss, aber auch bei der Konfiguration von Virtualisierungskomponenten wie KVM und Libvirt. Mit klassischen Unix-Tools wie Grep und Awk lassen sich XML-Dateien nur umständlich verarbeiten. Besser geht es mit einem Tool namens Xmlstarlet, mit dessen Hilfe der Anwender XML-Dateien durchsuchen und sogar verändern kann.
Der Quellcode findet sich unter http://xmlstar.sourceforge.net , das Programm ist aber auch in den Paket-Repositories vieler Linux-Distributionen enthalten. Ohne weitere Parameter aufgerufen, gibt das Tool einen Überblick seiner Funktionen, die über Unterbefehle erreichbar sind: "ed" für Editieren, "sel" für die Suche (Select), "tr" für Transformationen und so weiter. Mit dem jeweiligen Unterbefehl und "--help" aufgerufen, gibt Xmlstarlet genauere Anweisungen.
Einen Überblick über die Struktur einer XML-Datei gibt der folgende Befehl aus:
xmlstarlet el -a libvirt.xml
Wer zusätzlich noch die enthaltenen Attribute sehen will - was zum Beispiel bei der Libvirt sinnvoll ist, weil die XML-Elemente ansonsten leer sind - verwendet den Aufruf xmlstarlet el -v libvirt.xml.
Mit dem Select-Aufruf und dem Parameter -t lassen sich XPath-Ausdrückt verwenden, um gezielt einzelne Elemente zu finden. Einzelne Attribute des gefundenen Elements gibt Xmlstarlet aus, wenn man sie mit einem At-Zeichen aufführt:
xmlstarlet sel -t -m "//disk" -v "@device" libvirt.xml
Allerdings hängt Xmlstarlet hier die Devices einfach hintereinander. Etwas komplizierter ist es, sie zu trennen, denn dazu benötigt man einerseits die Concat-Funktion und andererseits einen Zeilenumbruch:
xmlstarlet sel -t -m "//disk" -v "concat(@device,' ')" libvirt.xml cdrom disk
Der Fantasie sind bei solchen Abfragen Grenzen nur durch die Xpath-Syntax gesetzt.
Mit "ed" kann Xmlstarlet XML-Dateien auch editieren, mit "c14n" in ein kanonisches XML-Format umwandeln. Mehr Informationen bietet die PDF-Dokumentation unter http://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.pdf . Wer das Tool einfach mal ausprobieren möchte, kann sich nach der Installation ein Verzeichnis-Listing im XML-Format mit "xmlstarlet ls" ausgeben lassen.