Xml

Aus DebianforumWiki

Wechseln zu: Navigation, Suche

Baustelle.png Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade.

XML steht für Extensible Markup Language. Es ist eine Syntax, die in einer Textdatei abgelegt, sowohl von Menschen als auch Maschinen und Programmen lesbar ist. Sie ist sehr verbreitet und stellt eine Art Datenbank dar. Das HTML Format ist mit ihr verwandt.

In dieser Wikiseite sollen erst einmal einige Basics, darunter wie man von der Shell auf eine XML-Datei zugreift, diese ausließt (parsing) und auch modifiziert, aufgezeigt werden.

Es sei auch darauf hingewiesen, dass die Shell nicht die leistungsstärkste Herangehensweise an die XML Programmierung ist, doch fürs Anfangen und die Verwaltung kleinerer Datensätze ist es ausreichend.

Inhaltsverzeichnis

Beispiel einer XML Datei

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <verzeichnis>
  3.      <titel>Schweiz</titel>
  4.      <Kanton name="Genf">
  5.           <Stadt Einwohnerzahl="200000">Genf</Stadt>
  6.           <Stadt>Vernier</Stadt>
  7.      </Kanton>
  8.      <Kanton name="Waadt">
  9.           <Stadt>Lausanne</Stadt>
  10.      </Kanton>
  11. </verzeichnis>

Knoten, die hier die Struktur ergeben, können Attribute enthalten, wie hier im Beispiel z.B. name="Genf", und enthalten Elemente, wie beispielsweise Schweiz, Genf und Vernier. Doch statt bzw. zusätzlich zu Werten können neue Knoten als Elemente angelegt werden.

Den Aufbau bzw. die Struktur der Datei ließe sich auch, die Elemente enthaltend, als Absolutpfad ausgehend von der Wurzel (Rootebene) /, anzeigen.

user@debian:~$ xmlstarlet el datei.xml
verzeichnis
verzeichnis/titel
verzeichnis/Kanton
verzeichnis/Kanton/Stadt
verzeichnis/Kanton/Stadt
verzeichnis/Kanton
verzeichnis/Kanton/Stadt

Damit geht es nun fließend über in die Verwendung des xpath Wergzeuges für XML.

Einige aus den Standardrepositories verfügbare Programme zur XML Bearbeitung

root@debian:~# apt-get install libxml2-utils xmlstarlet

Beispiele

Abruf Elemente zu einem String, hier zu "Stadt":

user@debian:~$ xmllint --xpath "//Stadt/text()" datei.xml

Zählen der Elemente z.B. die Anzahl der Einträge mit "Stadt"

user@debian:~$ xmllint --xpath "count(//Stadt)" datei.xml

An die XML Datei den Kanton Thurgau hinzufügen

user@debian:~$ xmlstarlet ed --inplace  -s "/verzeichnis" -t elem -n Kanton -i  "/verzeichnis/Kanton[last()]"  -t attr -n name -v Thurgau datei.xml

Bewohnerzahl des Kantons Thurgau als Attribut anfügen

user@debian:~$ xmlstarlet ed --inplace  -i  "/verzeichnis/Kanton[last()]"  -t attr -n Einwohnerzahl -v 1025000 datei.xml

oder

user@debian:~$ xmlstarlet ed  --inplace -i  "//Kanton[3]"  -t attr -n Einwohnerzahl -v 1025000 datei.xml

oder

user@debian:~$ xmlstarlet ed  -i  "/verzeichnis/Kanton[@name='Thurgau']"  -t attr -n Einwohnerzahl -v 1025000 datei.xml

Abgleich zweier XML Dateien und Kombination mit dem Programm find

Quellenverzeichnis

Weblinks

Meine Werkzeuge