Tipps und Tricks zu Perl und CPAN-Modulen

XML Pretty-Printing mit XML::Twig

Beitrag von Uwe am 04.04.2007 um 12:30 Uhr | 6 Kommentare

Manchmal möchte man XML schön eingerückt ausgeben ("pretty printing" auf Englisch), weil das einfach übersichtlicher ist, als direkt alle Tags hintereinander :-)

Dazu verwende ich XML::Twig:

#!/usr/bin/perl

use warnings;
use strict;

use XML::Twig;

# XMLRPC-Request
my $xml = <<'END';
<?xml version="1.0"?><methodCall><methodName>Test</methodName>
<params><param><value><string>test</string></value></param>
</params></methodCall>
END

my $twig = XML::Twig->new(pretty_print => 'indented');
$twig->parse($xml);

$twig->print;

Download: pretty-print.pl

Anstelle von "indented" für den Parameter "pretty_print" gibt es noch eine Reihe weiterer Optionen (z. B. kompakter oder ohne Einrückung).

Die Methode "print" gibt unser XML auf der Standardausgabe aus. Mit "sprint" kann man dies auch in einer Variable auffangen - also kein Grund, gleich die Standardausgabe aufzuzeichen. :-)

Die Ausgabe sieht dann so aus:

<?xml version="1.0"?>
<methodCall>
  <methodName>Test</methodName>
  <params>
    <param>
      <value>
        <string>test</string>
      </value>
    </param>
  </params>
</methodCall>

Wer auf der Kommandozeile XML-Dateien "pretty-printen" möchte, der kann "xml_pp" benutzen, welches in der Distribution von XML::Twig enthalten ist.

Vom gleichen Autor ist übrigens auch noch eins meiner absoluten Lieblingsmodule: HTML::TreeBuilder::XPath (kommt auch hier im Blog zum Einsatz). Doch dazu in einem späteren Beitrag mehr...