Thread XML::Simple bringt mir alles durcheinander... (15 answers)
Opened by Nordlicht at 2010-10-10 00:05

Nordlicht
 2010-10-10 00:05
#141797 #141797
User since
2005-10-16
182 articles
BenutzerIn
[default_avatar]
Hallo Leute,

Ich hab ein Problem mit XML::Simple:

Ich hab gerade ein Programm gebastelt, dass mit Hilfe von XML::Simple einige Daten, die ich in XML geschrieben hab ausließt.

Das Auslesen und verarbeiten funktioniert auch wunderbar. Aber nun wollte ich einen zweiten Programm-Teil schreiben, der die Daten mit einigen Änderungen am Inhalt (nicht an der Struktur!) zurück schreibt. Nur dabei entsteht absolutes Chaos!

Wenn ich XMLin() diese Struktur zu fressen gebe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
   <opt>
<tables>
<section name="blubb" index="1">
<top>irgendein text</top>
<row id="">irgendein text</row>
</section>
<section name="bla" index="0">
</section>
</tables>
</opt>

Hier der Output von Data::Dumper
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$VAR1 = {
'tables' => {
'section' => {
'blubb' => {
'index' => '1',
'top' => 'irgendein text',
'row' => {
'content' => 'irgendein text',
'id' => ''
}
},
'bla' => {
'index' => '0'
}
}
}
};


und dann genau die Struktur, so wie XMLin() sie eingelesen hat an XMLout() übergebe, macht XMLout() daraus das hier:

Code: (dl )
1
2
3
4
5
6
7
8
<opt>
<tables name="section">
<bla index="0" />
<blubb index="1" top="irgendein text">
<row id="">irgendein text</row>
</blubb>
</tables>
</opt>


Nach erneutem einlesen mit XMLin() sieht der Data::Dumper Output dann so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$VAR1 = {
'tables' => {
'blubb' => {
'index' => '1',
'top' => 'irgendein text',
'row' => {
'content' => 'irgendein text',
'id' => ''
}
},
'bla' => {
'index' => '0'
},
'name' => 'section'
}
};


Das ist nicht nur eine Veränderung der Reihenfolge, wie in der Beschreibung von XML::Simple behauptet wird... das ist komplettes "Kaudawelsch" und hat nix mehr mit meiner ursprünglichen Struktur zu tun!

Ich dachte XML wäre dazu da, Daten zu strukturieren, warum bringt XML::Simple alles durcheinander? Die zweite Struktur, die beim Zurückschreiben entsteht, lässt sich mit dem Programm, dass die erste Struktur verarbeitet hat, gar nicht mehr nutzen. Die Datenstruktur ist ganz anders verschachtelt als im ersten Fall, wie man mit Data::Dumper sieht.

Gibt es vielleicht andere Module, die XML so ausgeben, wie sie es eingelesen haben?

Wäre für Tipps sehr dankbar.

Gruß, Nordlicht.

View full thread XML::Simple bringt mir alles durcheinander...