XML parsen mit perl
Cord Beermann
cord at Wunder-Nett.org
Sun Aug 26 21:37:33 CEST 2007
Hallo.
Ich versuche gerade eine xml-Datei einzulesen, Format:
---------------------------------------------------------------------------
<oc11xml version="1.1" date="2007-08-23 17:27:17" since="2007-01-01 00:00:00">
<cache>
<id id="103013" node="1">E1B384F9-C7AD-09DF-95D6-0523683E4C82</id>
<name><![CDATA[Lupfen]]></name>
<waypoints gccom="GCGQ6G" nccom="N01082" oc="OC0ED3" />
</cache>
<cache>
<id id="103014" node="1">35D59600-93C5-C4B6-05AF-18A09D6CDB4D</id>
<name><![CDATA[Udilhild´s Heiratsgut]]></name>
<waypoints gccom="GCGQ6V" nccom="N01085" oc="OC0ED4" />
</cache>
</oc11xml>
---------------------------------------------------------------------------
Beispiel für Aufbau, <name></name> ist nicht eindeutig. Die
eigentliche Datei enthält etwa 10000 Datensätze.
dafür benutze ich XML::Simple:
---------------------------------------------------------------------------
#!/usr/bin/perl -w
use XML::Simple;
$xml = new XML::Simple;
$data = $xml->XMLin("$ARGV[0]", ForceArray => 0 );
foreach $name (keys %{$data->{cache}} ) {
print $data->{cache}{$name}{waypoints}{oc} . "\n";
}
---------------------------------------------------------------------------
Relevanter Teilcode.
Damit habe ich <name> als 'Handle' um auf die anderen Werte zugreifen
zu könnnen. Da aber <name> eben nicht eindeutig wirft mir perl
Fehlermeldungen aus:
Warning: <cache> element has non-unique value in 'name' key attribute:
HCC at /home/cord/bin/gps-import-ocxml line 33
wie mache ich, das ich die unique-ids in 'waypoints => oc' oder
'id => id' als Handles bekomme?
Vielen Dank,
Cord
More information about the Linux
mailing list