Perl XMLをインデントして出力する
Rev.1を表示中。最新版はこちら。
XML::DOMでDOM Treeを操作してtoStringすると出力されるXMLはインデントされないので読みにくい。
XML::Twigでインデントできる。
use strict; use warnings; use XML::DOM; use XML::Twig; my $xmlSrc = ""; $xmlSrc .= $_ while <DATA>; my $parser = new XML::DOM::Parser; my $doc = $parser->parse($xmlSrc); my $name = $doc->createElement("Name"); $name->addText("bar"); $doc->getDocumentElement->appendChild($name); my $xmlDst = $doc->toString; print $xmlDst; # インデントされない my $twig= new XML::Twig; $twig->set_indent(" "x2); $twig->parse($xmlDst); $twig->set_pretty_print("indented"); my $indentedXML = $twig->sprint; print $indentedXML; __DATA__ <?xml version="1.0"?> <Members> <Name>foo</Name> </Members>