Bash:
Werken met XML

Hoe:

Zo parseer je XML in Bash. Gereedschappen? xmllint en xmlstarlet. Door XML-elementen loopen? Absoluut. Voorbeeld met voorbeelduitvoer:

# Aannemende dat xmlstarlet is geïnstalleerd
# Installeren met: apt-get install xmlstarlet

# XML-inhoud parsen
cat <<EOF > voorbeeld.xml
<fruits>
  <fruit name="Appel"/>
  <fruit name="Banaan"/>
</fruits>
EOF

# Namen extraheren met xmlstarlet
xmlstarlet sel -t -m "//fruit" -v "@name" -n voorbeeld.xml

# Uitvoer zou moeten zijn:
# Appel
# Banaan

Diepere Duik

Terug in de jaren ‘90, dook XML op als een simpeler alternatief voor SGML, maar gestructureerder dan HTML. Nu heeft het gezelschap – JSON, YAML, bijvoorbeeld. Maar XML is nog steeds springlevend, vooral in configuraties en op SOAP-gebaseerde webservices.

Wat betreft gereedschap, xmllint is comfortabel voor XML-validatie, xpath queries. xmlstarlet is het Zwitsers zakmes voor XML-kunstjes – query’en, bewerken, valideren, transformeren. In bash-scripts zijn ze superhelden voor XML-taken.

Onder de motorkap gebruikt xmllint libxml2 – de XML C parser. Het is snel, maar de foutmeldingen? Cryptisch. En xmlstarlet? Recursieve templates en de EXSLT-ondersteuning. Hersenkraker, maar krachtig.

Zie Ook