XML::Generator

XMLファイルを生成する。

タグや属性値に日本語を使用する時は、UTF8文字列(use utf8 で作成した文字列)を使わないと正しく動かず、使い勝手は悪い。

use XML::Generator;
パッケージをロードする。

my $gene = XML::Generator->new(parameter);
主なパラメータ:
:pretty[=N] : 下記のパラメータ組合せと等価
     escape => 'always',
     conformance => 'strict',
     pretty => N
namespace : XMLネームスペースを指定
    namespace => [HTML => "http://www.w3.org/TR/REC-html40"]
escape : XML属性値に使用できない文字(< > & など)のエスケープ指定
    escape => 'always' | 'unescaped'
pretty : XMLをテキスト表示(print)した時のインデント文字数
    pretty => 4
    pretty => '\t'
conformance : XML文法の厳格さ
    conformance => 'strict'
empty : 属性が空文字列のタグの表記方法
    empty => 'self' | 'compact' | 'close' | 'ignore' | 'args'
    self - <tag /> (default)
    compact - <tag/>
    close - <tag></tag>

$xmldb .= $gene->xmlcmnt('コメント文字列');
XMLコメント <!-- コメント文字列 --> を生成する。タグの後ろに改行は入らない。

$xmldb .= $gene->xmldecl;
XML declaration <?xml?>タグを生成する。

XML生成の例

use XML::Generator;
use utf8;
my $gen = XML::Generator->new(pretty => 4,
                        conformance => 'strict');
my $xmldb = $gen->xmldecl;
$xmldb .= $gen->xmlcmnt('これはコメントです');
$xmldb .= $gen->query({id => '0001'},
    $gen->keyword('テスト'),
    $gen->result("1行目\n2行目")
);
print "$xmldb\n";
-----
<?xml version="1.0" standalone="yes"?>
<!-- これはコメントです --><query id="0001">
    <keyword>テスト</keyword>
    <result>1行目
    2行目</result>
</query>