Bash:
XML:n käsittely

Miten:

Näin jäsennetään XML:ää Bashissa. Työkalut? xmllint ja xmlstarlet. Elementtien läpikäynti loopilla? Ehdottomasti. Esimerkki ja esimerkkituloste:

# Olettaen, että xmlstarlet on asennettu
# Asenna komennolla: apt-get install xmlstarlet

# Jäsennetään XML-sisältöä
cat <<EOF > sample.xml
<hedelmat>
  <hedelma nimi="Omena"/>
  <hedelma nimi="Banaani"/>
</hedelmat>
EOF

# Poimitaan nimet xmlstarletilla
xmlstarlet sel -t -m "//hedelma" -v "@nimi" -n sample.xml

# Tulosteen pitäisi olla:
# Omena
# Banaani

Syväsukellus

90-luvulla XML nousi esiin yksinkertaisempana vaihtoehtona SGML:lle, mutta rakenteellisempana kuin HTML. Nyt sillä on seuraa – esimerkiksi JSON, YAML. Mutta XML on yhä mukana pelissä, erityisesti konfiguraatioissa ja SOAP-pohjaisissa verkkopalveluissa.

Työkalujen osalta xmllint on mukava XML-validoinnissa, xpath-kyselyissä. xmlstarlet on Sveitsin armeijan linkkuveitsi XML-tempuille – kysely, muokkaus, validointi, muunnos. Bash-skripteissä ne ovat supersankareita XML-tehtävissä.

Teknisen puolen syvyyksissä xmllint käyttää libxml2:ta – C-pohjaista XML-jäsennintä. Se on nopea, mutta virheviestit? Kryptisiä. Ja xmlstarlet? Rekursiiviset mallit ja EXSLT-tuki. Mielenkiertoista, mutta tehokasta.

Katso myös