Hi,
ich mache eigentlich einen Bogen um XML und sein Zubehör, hatte aber heute Lust zu knobeln ;-)
Nur mit
XML::Smart alleine scheint es mir nicht sauber möglich zu sein.
Man kann jeder "loc" und "lastmod" ein Array übergeben und neben dem gewünschten String noch einen "Dummy" String mitgeben; dann generiert
XML::Smart die gewünschte Struktur. Wichtig ist, dass es innerhalb der Array-Ref mindestens zwei nicht-leere (wahre) Werte gibt, die verarbeitet werden können). Hinterher müsste man dann zusehen, wie man die "Dummy"-Einträge wieder rausbekommt. Recht unschön der Ansatz.
Hier eine Lösung, die ein weiteres Modul (
XML::Quick) zum Zusammenbauen verwendet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use strict;
use warnings;
use XML::Quick;
use XML::Smart;
my %hash = (
urlset => {
url => [
{
loc => "http://www.example.com/page1.html",
lastmod => "2013-11-20",
},
{
loc => "http://www.example.com/page2.html",
lastmod => "2013-11-21",
},
],
},
);
my $sitemap = XML::Smart->new(xml(\%hash));
print $sitemap->data(), "\n";
__END__
Ergebnis:
<?xml version="1.0" encoding="UTF-8" ?>
<?meta name="GENERATOR" content="XML::Smart/1.78 Perl/5.018001 [linux]" ?>
<urlset>
<url>
<lastmod>2013-11-20</lastmod>
<loc>http://www.example.com/page1.html</loc>
</url>
<url>
<loc>http://www.example.com/page2.html</loc>
<lastmod>2013-11-21</lastmod>
</url>
</urlset>
Last edited: 2013-11-21 23:11:24 +0100 (CET)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!