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
- xmlsoft.org: Libxml2 ja xmllint -juttuja.
- Stack Overflow: Todellisen maailman ongelmat ja ratkaisut.
- W3Schools XML-opas: XML:n perusteet.