ADMIN-Tipp: Xmlstarlet

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Auf der Kommandozeile ist es schwierig, XML-Dateien zu verarbeiten. Das kleine Tool Xmlstarlet hilft dabei.

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. 

07.11.2012

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Setup eines Kubernetes-Clusters mit Kops

Vor allem für Testinstallationen von Kubernetes gibt es einige Lösungen wie Kubeadm und Minikube. Für das Setup eines Kubernetes-Clusters in Cloud-Umgebungen hat sich Kops als Mittel der Wahl bewährt. Wir beschreiben seine Fähigkeiten und geben eine Anleitung für den praktischen Einsatz. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018

Microsite