Thread XML Out - Hash (14 answers)
Opened by Dubu at 2005-11-04 14:14

Schmidtl
 2005-11-04 13:49
#59719 #59719
User since
2005-09-27
14 Artikel
BenutzerIn
[default_avatar]
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):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
<?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:
Code: (dl )
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

View full thread XML Out - Hash