Linuxなどのメモ書き

Perl XMLをインデントして出力する


XML::DOMでDOM Treeを操作してtoStringすると出力されるXMLはインデントされていないので読みにくい。読みやすくインデントしたい。

XML::Twigでインデントできる。

#!/usr/bin/perl
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>
XML::DOMでtoStringした時点での出力
<?xml version="1.0"?>
<Members>
  <Name>foo</Name>
<Name>bar</Name></Members>        
XML::Twigでインデントした結果
<?xml version="1.0"?>
<Members>
  <Name>foo</Name>
  <Name>bar</Name>
</Members>



最終更新 2006/09/09 12:45:34 - kztomita
(2006/09/09 12:39:16 作成)


リンク

その他のWiki
Linuxメモ
Xnuメモ

会社
(有)ビットハイブ
受託開発やってます。

よくやる仕事

・Webシステム開発(LAMP環境)
・Linuxサーバー設定関連
サーバー移転作業代行

開発事例にデジタルカタログ/マンガビューワーを追加しました。

draggable.jsのスマホ対応版デモページを追加しました。説明はこちら

検索

Adsense
最近のコメント