Thread XML::Simple nested nodes löschen
(9 answers)
Opened by guenni at 2013-03-08 11:34
Hallo,
in einem anderen Thread habe ich gelernt (??) wie ich durch verschachtelte Nodes parsen kann. Inzwischen kann ich diese auch bearbeiten und sortieren. Jetzt möchte ich gerne noch einzelne dieser Nodes löschen. Ich habe das mit splice und delete probiert, komme aber zu keinem Ergebnis. Hier das XML: Code: (dl
)
1 <?xml version="1.0" encoding="UTF-8"?> Und hier das Perl: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 use strict; use XML::Simple; use Data::Dumper; my $xml = new XML::Simple; my $data = $xml->XMLin("data.xml", KeyAttr => [], ForceArray => 1); my @todos = (); push @todos, { data => $_ } for @{$data->{data}}; while (@todos) { my $todo = pop @todos; if ($todo->{data}{id} =~ /^2$/){ print "delete\n"; delete ($todo->{data}); # splice(@{$todo->{data}},0); print Dumper $todo; next; } } XMLout($data, OutputFile => 'out.xml', rootname => 'items', XMLDecl => '<?xml version="1.0" encoding="UTF-8"?>'); print Dumper $data; Im Dump innerhalb der Schleife kann ich sehen, das der Node mit der "id=2" nach dem delete leer ist ($VAR1 = {};). Im Dump nach der Ausgabe und in der Ausgabe selbst ist aber alles noch enthalten. Irgendwie habe ich das ganze Konzept wohl noch nicht verstanden, kann mir vielleicht jemand erläutern wo mein Denkfehler ist. Danke Guenni |