Sto scrivendo un semplice script Perl che utilizza XML :: Smart per creare e analizzare un file XML. Ho avuto un problema con l'eliminazione dei nodi XML. Ho il seguente codice:Perl e XML: Smart: come rimuovere un nodo da un file XML
if (exists $XML->{object}[$n]) {
delete $XML->{object}[$n] ;
};
$XML->save('dane.xml') ;
Si fa quello che ci si aspetta - vale a dire, il nodo corretto viene eliminato. Tuttavia, quando successivamente si tenta di elencare tutti i nodi (bambini di una particolare radice), usando il codice seguente (che di solito funziona):
my @objects = $XML->{object}('@') ;
foreach my $object (@objects) {
say "$object->{address}";
};
Perl elenca tutti i nodi fino a quello prima di quello eliminato, e poi sputa fuori il seguente errore:
Not a HASH reference at g:/Dwimperl/perl/site/lib/XML/Smart/Tie.pm line 48, <STDIN> line 2.
stumped - ho provato ad utilizzare varie permutazioni di $ XML> dati(); ma nessuno ha funzionato. Preferirei continuare a utilizzare XML :: Smart per questa attività, quindi spero che questo problema possa essere risolto all'interno di questa particolare libreria.
Buona prima domanda! – slm
+1 Sono d'accordo con slm - questo è rinfrescantemente scritto – Borodin