XML-Dateien aufhübschen

19. Dezember 2013 · Programmierung · andreas · Kein Kommentar

Genau wie Maschinen oft Probleme haben, etwas für Menschen problemlos verständliches zu verarbeiten, so blickt ein Mensch dann und wann auf den Inhalt einer maschinenlesbaren Datei und kann darin nur wenig erkennen.

Geht es um die Verarbeitung von XML-Dateien, so können wenige Zeilen Perl eine deutliche Verbesserung schaffen - zum Beispiel bei der Aufbereitung einer “SEPA Payments"-XML-Datei.

use strict;
use warnings;
use XML::LibXML;
use XML::LibXML::PrettyPrint;

my $file = $ARGV[0] || die "usage: pretty.pl inputfile.xml\n";

my $document = XML::LibXML->new->parse_file($file);
my $pp = XML::LibXML::PrettyPrint->new(

indent_string => chr(9),
element => {
compact => [qw/MsgId CreDtTm PmtInfId PmtMtd NbOfTxs CtrlSum Cd ReqdExctnDt Nm IBAN BIC ChrgBr EndToEndId InstdAmt Ustrd/],
}
);
$pp->pretty_print($document);

open(sFILE, '>pretty-' . $file);
print sFILE $document->toString;
close (sFILE);

Die hauptsächliche Arbeit übernimmt das Modul XML::LibXML::PrettyPrint, dessen Ausgabe mit Hilfe einer Reihe von Parametern an die jeweiligen Bedürfnisse angepasst werden kann.