XML im Terminal formatieren

Fr, 29. April 2022, Ralf Hersel

Wer mit XML-Dateien arbeitet, hat es oft mit schlecht formatierten Daten zu tun. Diese lassen sich zwar in Editoren oder IDEs umformatieren, wozu meist Plugins benötigt werden. Dies geht jedoch auch im Terminal mit Bordmitteln. Hierzu ein kleines Beispiel. Die Datei note.xml enthält unformatiertes XML:

Dies lässt sich mit dem Werkzeug xmllint ändern. Das Programm analysiert eine oder mehrere XML-Dateien, die auf der Befehlszeile als XML-FILE angegeben sind (oder die Standardeingabe, wenn der angegebene Dateiname - ist). Es gibt verschiedene Arten von Ausgaben aus, je nach den gewählten Optionen. Es ist nützlich, um Fehler sowohl im XML-Code als auch im XML-Parser selbst zu erkennen. xmllint ist im Paket libxml(3) enthalten, welches in den gängigen Distributionen zur Standardausstattung gehört.

Der Aufruf von xmllint note.xml ändert noch nichts:

xmllint note.xml
<?xml version="1.0" encoding="UTF-8"?>
<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>

Erst die Option '--format' führt zum gewünschten Ergebnis:

xmllint --format note.xml
<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Wer die neu formatierte Datei abspeichern möchte, erreicht dies mit der Option '--output':

xmllint --format note.xml --output nice_note.xml
cat nice_note.xml
<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Xmllint bietet noch viele weitere Möglichkeiten, die ihr der man-Page entnehmen könnt:

Quelle: https://www.mankier.com/1/xmllint

Tags

xml, Format, formatieren, Terminal