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...