PerlでXMLを作成する必要があります。私が読んだところによると、 XML :: LibXML は、他の場所からのXMLを解析して使用するのに最適です。 XMLライターについて何か提案はありますか? XML :: Writer はまだ維持されていますか?誰かがそれを好き/使用していますか?
機能の完全性に加えて、使いやすい構文に興味があるので、構文と、そのモジュールが好きな理由を答えに説明してください。
回答ごとに1つの提案で返信してください。誰かがすでにあなたのお気に入りで回答している場合は、その回答に投票してください。うまくいけば、最も人気のあるものを簡単に確認できます。
ありがとう!
XML :: Writerはまだ維持されており(少なくとも今年の2月の時点で)、実際にそこにあるお気に入りのPerlXMLライターの1つです。
構文の説明については、モジュールのドキュメントを参照することをお勧めします(リンクはすでに問題になっています)。ウィットに:
use XML::Writer;
my $writer = new XML::Writer(); # will write to stdout
$writer->startTag("greeting",
"class" => "simple");
$writer->characters("Hello, world!");
$writer->endTag("greeting");
$writer->end();
# produces <greeting class='simple'>Hello world!</greeting>
念のため、XML :: LibXMLを使用するスニペットを次に示します。
#!/usr/bin/env Perl
#
# Create a simple XML document
#
use strict;
use warnings;
use XML::LibXML;
my $doc = XML::LibXML::Document->new('1.0', 'utf-8');
my $root = $doc->createElement('my-root-element');
$root->setAttribute('some-attr'=> 'some-value');
my %tags = (
color => 'blue',
metal => 'steel',
);
for my $name (keys %tags) {
my $tag = $doc->createElement($name);
my $value = $tags{$name};
$tag->appendTextNode($value);
$root->appendChild($tag);
}
$doc->setDocumentElement($root);
print $doc->toString();
そしてこの出力:
<?xml version="1.0" encoding="utf-8"?>
<my-root-element some-attr="some-value">
<color>blue</color>
<metal>steel</metal>
</my-root-element>
Perlでデータ構造を取得してXMLに変換する場合は、 XML :: Simple でうまく機能します。
最も単純なもの:
my $ hashref = {foo => 'bar'、baz => [1、2、3]}; use XML :: Simple; my $ xml = XML :: Simple :: XMLout($ hashref);
その名前が示すように、その基本的な使用法は単純です。ただし、必要に応じて多くの機能を提供します。
もちろん、XMLを簡単に解析することもできます。
私はあまりXMLをしませんが、 XML :: Smart それはあなたが望むことをするかもしれないように見えます。ドキュメントの XMLデータの作成 のセクションを見てください。非常にシンプルで使いやすいように見えます。
ドキュメントの言い換え:
use XML::Smart;
## Create a null XML object:
my $XML = XML::Smart->new() ;
## Add a server to the list:
$XML->{server} = {
os => 'Linux' ,
type => 'Mandrake' ,
version => 8.9 ,
address => [ '192.168.3.201', '192.168.3.202' ] ,
} ;
$XML->save('newfile.xml') ;
これはこれをnewfile.xmlに入れます:
<server os="Linux" type="Mandrake" version="8.9">
<address>192.168.3.201</address>
<address>192.168.3.202</address>
</server>
涼しい。私はこれで遊ぶ必要があります:)
XML :: Smartは見栄えが良いですが、何年も前に XML :: Simple を使用していたときに利用可能だったのを覚えていません。優れたインターフェイスであり、XMLの読み取りと書き込みに適しています。
私は XML :: TreeBuilder が好きです。なぜなら、それは私の考えに合っているからです。歴史的に、私はそれを放出よりも構文解析に使用してきました。
この質問が投稿されてから数週間後、PerlからXMLを生成する機会がありました。ここにリストされている他のモジュールを調査しました。そのうちの1つがXML :: TreeBuilderよりもうまく機能すると仮定しましたが、それでもTreeBuilderが私が望んでいたものに最適な選択でした。
1つの欠点は、XML :: TreeBuilderオブジェクトで処理命令と宣言を表す方法がないことでした。