[[Vorlage(Getestet,bionic, )]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(xmlstarlet.png, 100, align=left)]] [sourceforge2:xmlstar:XMLstarlet] {en} ist ein Kommandozeilen-Programm, mit dem [wikipedia:Extensible Markup Language:XML]-Dokumente transformiert, durchsucht, validiert und editiert werden können. XMLstarlet unterstützt die Berechnung von [wikipedia:XPath:]-Ausdrücken. Die Software ist in C geschrieben und verwendet [http://xmlsoft.org/ libxml2] {en}. = Installation = XMLstarlet kann direkt aus den Quellen installiert werden [1]. {{{#!vorlage Paketinstallation xmlstarlet}}} Das Programm kann dann sofort gestartet werden. = Benutzung = Die allgemeine Syntax von xmlstarlet lautet: {{{#!vorlage Befehl xmlstarlet [OPTIONEN] BEFEHL [BEFEHLSOPTIONEN] [XML-DATEI ...] }}} Wenn keine `XML-Datei` angegeben wird, liest das Programm von der Standardeingabe. == Befehle == Das Programm kennt unter anderem die folgenden Befehle: {{{#!vorlage Tabelle <-2 tableclass="zebra_start3" rowclass="titel">Auswahl von Befehlen +++ Befehl Beschreibung +++ `ed` Editieren von XML-Dokumenten +++ `sel` Filtern bzw. Durchsuchen von XML-Dokumenten +++ `tr` Transformieren von XML-Dokumenten +++ `val` Validierung von XML-Dokumenten +++ `fo` Formatierung von XML-Dokumenten +++ `el` Zeigt die Elementstruktur eines XML-Dokuments }}} Weitere Befehle und die Optionen findet man auf der [:man:Manpage] von XMLstarlet. == Beispiele == Im Folgenden wird angenommen, dass die Datei '''simpsons.xml''' diesen Aufbau hat: {{{#!code xml Homer Simpson 39 Bart Lisa Maggie technischer Überwacher im KKW Astronaut Fett-Verkäufer Bowling Angeln Carl Lenny Marge Simpson 34 Bart Lisa Maggie Hausfrau KKW Angestellte Polizistin Malen Zeichnen }}} === sel === ==== Syntax ==== {{{#!vorlage Befehl xmlstarlet sel GLOBALE_OPTIONEN {TEMPLATE} [ XML-DATEI ... ] }}} Für `{TEMPLATE}` benutzt man `-t OPTIONEN`, wobei einige OPTIONEN in folgender Tabelle aufgeführt sind. {{{#!vorlage Tabelle <-2 rowclass="titel">Auswahl von Optionen +++ Option Beschreibung +++ `-c XPATH` Gibt eine Kopie des XPATH-Ausdrucks aus +++ `-v XPATH` Gibt den Wert des XPATH-Ausdrucks zurück +++ `-m XPATH` passt auf den XPATH-Ausdruck }}} Eine Übersicht der Optionen erhält man mit `xml sel --help`. ==== Beispiele ==== Um eine Kopie der Datei '''simpsons.xml''' auszugeben kann man folgenden Befehl benutzen {{{#!vorlage Befehl xmlstarlet sel -t -c "/" simpsons.xml }}} Um nur die Elemente ohne die Namen auszugeben, benutzt man `-v` {{{#!vorlage Befehl xmlstarlet sel -t -v "/" simpsons.xml }}} {{{ Homer Simpson 39 Bart Lisa Maggie technischer Überwacher im KKW Astronaut Fett-Verkäufer Bowling Angeln Carl Lenny Marge Simpson 34 Bart Lisa Maggie Hausfrau KKW Angestellte Polizistin Malen Zeichnen }}} Die Namen aller Simpsons in der Datei gibt {{{#!vorlage Befehl xmlstarlet sel -t -v "//name" simpsons.xml }}} aus: {{{ Homer Simpson Marge Simpson }}} Die Jobs von Homer erhält man mit {{{#!vorlage Befehl xmlstarlet sel -t -v "/simpsons/figur[1]/jobs" simpsons.xml }}} {{{ technischer Überwacher im KKW Astronaut Fett-Verkäufer }}} oder alternativ mit {{{#!vorlage Befehl xmlstarlet sel -t -v "//figur[name=\"Homer Simpson\"]/jobs" simpsons.xml }}} Zugriff auf Attribute erhält man mit `@` {{{#!vorlage Befehl xmlstarlet sel -t -v "//@lang" simpsons.xml }}} {{{ de }}} === ed === ==== Syntax ==== {{{#!vorlage Befehl xmlstarlet ed GLOBALE_OPTIONEN {AKTION} [XML-DATEI ...] }}} Einige `AKTIONEN` sind in folgender Tabelle aufgeführt_ {{{#!vorlage Tabelle <-2 rowclass="titel">Auswahl von Aktionen +++ Aktion Beschreibung +++ `-d XPATH` Löscht XPATH. +++ `-i XPATH -t elem|text|attr -n NAME [-v WERT]` Fügt etwas mit NAME und WERT an der Stelle XPATH ein. +++ `-s XPATH -t elem|text|attr -n NAME [-v WERT]` Erstellt einen Unterknoten mit NAME und WERT an der Stelle XPATH. +++ `-r XPATH -v NAME` Benennt XPATH um +++ `-u XPATH -v WERT` Aktualisiert den Wert von XPATH +++ }}} Eine Übersicht der Optionen erhält man mit `xml ed --help`. ==== Beispiele ==== Um den letzten Figur-Knoten zu löschen (Option `-d`) kann man {{{#!vorlage Befehl xmlstarlet ed -d "//figur[last()]" simpsons.xml }}} nutzen: {{{#!code xml Homer Simpson 39 Bart Lisa Maggie technischer Überwacher im KKW Astronaut Fett-Verkäufer Bowling Angeln Carl Lenny }}} Um die job-Knoten in ''"beruf"'' umzubenennen benutzt man {{{#!vorlage Befehl xmlstarlet ed -r "/simpsons/*/jobs" -v "beruf" simpsons.xml }}} {{{#!code xml Homer Simpson 39 Bart Lisa Maggie technischer Überwacher im KKW Astronaut Fett-Verkäufer Bowling Angeln Carl Lenny Marge Simpson 34 Bart Lisa Maggie Hausfrau KKW Angestellte Polizistin Malen Zeichnen }}} Um einen Wert zu aktualisieren kann man {{{#!vorlage Befehl xmlstarlet ed -u "/simpsons/figur[1]/alter" -v "40" simpsons.xml }}} nutzen: {{{#!code xml Homer Simpson 40 Bart Lisa Maggie technischer Überwacher im KKW Astronaut Fett-Verkäufer Bowling Angeln Carl Lenny Marge Simpson 34 Bart Lisa Maggie Hausfrau KKW Angestellte Polizistin Malen Zeichnen }}} Ein Element hinzufügen geht mit {{{#!vorlage Befehl xmlstarlet ed -s "/simpsons/figur[1]/jobs" -t elem -n "job" -v "Einschienenbahn-Zugführer" simpsons.xml }}} {{{#!code xml Homer Simpson 39 Bart Lisa Maggie technischer Überwacher im KKW Astronaut Fett-Verkäufer Einschienenbahn-Zugführer Bowling Angeln Carl Lenny Marge Simpson 34 Bart Lisa Maggie Hausfrau KKW Angestellte Polizistin Malen Zeichnen }}} XMLstarlet kenn noch viele weitere Befehle und Optionen, zusätzliche Informationen entnimmt man dem [http://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.pdf XMLstarlet-Userguide] {en}. == Links == * [sourceforge2:xmlstar:Homepage des Projektes] {en} * [http://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.pdf Dokumentation] {en} * [https://www.w3schools.com/xml/xpath_intro.asp Einführung in XPath] {en} #tag: Shell, Programmierung, Büro