Bash:
Arbeiten mit XML

Wie:

So parst du XML in Bash. Werkzeuge? xmllint und xmlstarlet. Durch XML-Elemente loopen? Auf jeden Fall. Beispiel mit beispielhafter Ausgabe:

# Vorausgesetzt xmlstarlet ist installiert
# Installation mit: apt-get install xmlstarlet

# XML-Inhalte parsen
cat <<EOF > sample.xml
<fruits>
  <fruit name="Apfel"/>
  <fruit name="Banane"/>
</fruits>
EOF

# Namen mit xmlstarlet extrahieren
xmlstarlet sel -t -m "//fruit" -v "@name" -n sample.xml

# Die Ausgabe sollte sein:
# Apfel
# Banane

Tiefergehend

Zurück in den 90ern tauchte XML als eine einfachere Alternative zu SGML auf, aber strukturierter als HTML. Jetzt hat es Gesellschaft – JSON, YAML, zum Beispiel. Aber XML ist immer noch am Leben, besonders in Konfigurationen und SOAP-basierten Webdiensten.

Was die Werkzeuge angeht, ist xmllint bequem für XML-Validierung, xpath-Abfragen. xmlstarlet ist das Schweizer Taschenmesser für XML-Schabernack – Abfragen, Bearbeiten, Validieren, Transformieren. In Bash-Skripten sind sie Superhelden für XML-Aufgaben.

Unter der Haube verwendet xmllint libxml2 – den XML C-Parser. Er ist schnell, aber die Fehlermeldungen? Kryptisch. Und xmlstarlet? Rekursive Vorlagen und die EXSLT-Unterstützung. Kopfverdreher, aber mächtig.

Siehe auch