Ich weiß nicht, warum Inshallla Antwort wurde downvoted, weil XML::Generator & XML::Writer sind beide gute Module zum Schreiben von XML.
Mit der Whats on iTunes? spec Sie dann kommentierte dies ist, wie es mit Hilfe von XML aussehen könnte :: Generator:
use strict;
use warnings;
use XML::Generator;
my $x = XML::Generator->new(pretty => 2, conformance => 'strict');
my $itunes_ns = [ 'itunes' => 'http://www.itunes.com/dtds/podcast-1.0.dtd' ];
say $x->xmldecl(encoding => 'UTF-8');
say $x->rss(
$x->channel(
$x->title('All about Everything'),
$x->category($itunes_ns, { text => 'Technology' },
$x->category($itunes_ns, { text => 'Gadgets' }),
),
$x->category($itunes_ns, { text => 'TV & Film' }),
),
);
Dies erzeugt:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<channel>
<title>All about Everything</title>
<itunes:category text="Technology">
<itunes:category text="Gadgets" />
</itunes:category>
<itunes:category text="TV & Film" />
</channel>
</rss>
die beantworten "Perl-Array in XML umwandeln", dann hier ein Beispiel:
use strict;
use warnings;
use XML::Generator;
my $x = XML::Generator->new(pretty => 2, conformance => 'strict');
my $itunes_ns = [ 'itunes' => 'http://www.itunes.com/dtds/podcast-1.0.dtd' ];
my @categories = ({ "Technology" => [ "Gadgets", 'Gizmo' ] }, "TV & Film");
say $x->xmldecl(encoding => 'UTF-8');
say $x->rss(
$x->channel(
$x->title('All about Everything'),
map { recurse($_) } @categories,
),
);
sub recurse {
my $item = shift;
return $x->category($itunes_ns, { text => $item })
unless ref $item eq 'HASH';
my ($k, $v) = each %$item;
return $x->category($itunes_ns,
{ text => $k },
map { recurse ($_) } @$v);
}
Schauen Sie sich die vorherige Frage SO something a bit similar
ein besonderer Grund für den downvote? – Inshallah
War ich nicht, aber wahrscheinlich für den Umgang mit XML als Text und nicht über eines der vielen, vielen Module, die kein schlechtes XML generieren. –
Ich habe zwei Vorschläge gemacht (XML :: Generator und XML :: Writer), obwohl ich nicht sicher bin, ob und wie viel sie überprüfen. Und um schlechtes XML zu erzeugen, erzeugt der Code in meiner Antwort * keine * schlechte XML ** für diese spezielle Eingabe ** :-). – Inshallah