XML:: Писатель все еще сохраняется (по крайней мере, по состоянию на февраль этого года), и это - действительно один из любимого Perl писатели XML там.
Что касается описания синтаксиса, каждый лучше для рассмотрения документации модуля (ссылка уже находится в вопросе). К остроумию:
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>
Если Вы хотите взять структуру данных в Perl и превратить его в XML, XML:: Простой сделает задание приятно.
В его самом простом:
my $hashref = { foo => 'bar', baz => [ 1, 2, 3 ] }; use XML::Simple; my $xml = XML::Simple::XMLout($hashref);
, Поскольку его имя предлагает, его основное использование просто; однако это действительно предлагает много функций при необходимости в них.
Естественно, это может также проанализировать XML легко.
Я не делаю большого количества XML, но XML:: Умный похож на него, мог бы сделать то, что Вы хотите. Смотрите на раздел Данные 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:: Умные хорошие взгляды, но я не помню его являющийся доступным, когда я использовал XML:: Простой много лет назад. Хороший интерфейс, и работает хорошо на чтение и запись XML.
Мне нравится XML:: TreeBuilder, потому что это соответствует способу, которым я думаю. Исторически, я использовал его больше для парсинга, чем испускание.
Спустя несколько недель после того, как этот вопрос был отправлен, у меня был случай для генерации некоторого XML от Perl. Я рассмотрел другие модули, перечисленные здесь, предположив, что один из них будет работать лучше, чем XML:: TreeBuilder, но TreeBuilder был все еще лучшим выбором для того, что я хотел.
Один недостаток был нет никакого способа представить инструкции по обработке и объявления в XML:: объект TreeBuilder.
Для записи, вот фрагмент, который использует 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>