Hallo,
ich möchte eine XML Datei berabeiten, d.h. Inhalte löschen, hinzufügen und bearbeiten. Nun habe ich an XML::Simple gedacht. Das Tutorial
http://perloo.de/XML/Simple/01.html ist prinzipiell super aber leider funktioniert es nicht zu 100%.
Meine Quelle (in.xml):
<?xml version='1.0' standalone='yes'?>
<opt>
<links title="Links" key="foi">
<page link="http://www.perl.org" title="www.perl.org">
<active en="The home of Perl" de="Die Homepage von Perl" />
<passive en=" and the Perl Community, the former home of the
Perl Mongers and all."
de=" und der Perl Gemeinschaft, die alte Homepage
der Perl Mongers usw." />
</page>
</links>
</opt>
wird verarbeitet durch folgenden Quelltext:
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
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/perl -w
use CGI qw/:standard/;
use strict;
use warnings;
use CGI;
print header;
print start_html(-title=>"Test",-style=>{-src=>"site.css"});
print "<style type='text/css'> input{ text-align:center; color: black; font-weight:600; } </style>\n";
print "<style type='text/css'> .input_left{ text-align:left; color: black; font-weight:600; } </style>\n";
use XML::Simple; # XML ganz einfach
use Data::Dumper; # Daten visualisieren
use Slurp; # Slurpt ganze Dateien in Variablen
open ( DUMP , "> out.dump" ); # Öffnet Ausgabedatei für Data::Dumper
my $xml = slurp( "in.xml" ); # XML aus der Datei in String einlesen
my $struct = XMLin( $xml, # Macht eine Datenstruktur daraus
( forcearray => [ qw/page/ ] ) );
print DUMP Dumper $struct; # Druckt in die Ausgabedatei
open ( XML , "> out.xml" ); # Öffnet Ausgabedatei für XML
my $dump = slurp( "out.dump" ); # Inhalt der Dumper-Datei einlesen
$struct = eval( $dump ); # Macht eine Datenstruktur daraus
$struct->{links}->{page}->[0]->{time} = time(); # fügt Zeit hinzu.
$xml = XMLout( $struct, # Macht XML aus der Datenstruktur
( xmldecl => 1 ) ); # Zeile: <?xml version='1.0' standalone='yes'?>
print XML $struct; # Druckt in die Ausgabedatei
close (DUMP);
close (XML);
Als Ergebnis sollte nun in out.xml die gleiche XML - Struktur mit einer zusätzlichen Zeile stehen. Aber leider steht in out.xml nur ein Hash (HASH(0x86bb864)) drin. Wie bekomme ich aber dort die XML Struktur hinein???
Danke.
MfG