J'utilise XML::Simple
et XML::Dumper
. Je suis bien au courant des problèmes entourant l'ancien module. Si je pouvais utiliser une bibliothèque alternative, je le ferais.Analyser les données XML et ajouter un nouvel élément en utilisant XML :: Simple
Ce que je veux accomplir est de charger le XML, puis ajouter des lignes à celui-ci. C'est ma structure XML avant l'exécution du script.
<person>
<appearance>
<param name="height" value="6,3"/>
</appearence>
</person>
Le script, ou ce que je comptais code, devrait charger ce XML à partir d'un fichier, puis ajoutez un élément <param>
sur <appearence>
. Je l'ai essayé en utilisant ce code:
use warnings;
use XML::Simple;
use XML::Dumper;
my $xml = XMLin('xml_import.xml');
$xml->{appearence} .= qq{<param name="age" value="22" />};
my $new_xml = XMLout($xml, noattr => 1, NoEscape => 1);
open(FILE, ">xml_import.xml");
print FILE $new_xml;
close FILE;
Malheureusement, la sortie est la suivante:
<opt>
<appearence>HASH(0x1722190)<param name="age" value="22" /></appearence>
</opt>
Non seulement je perds mes originaux <person>
balises à <opt>
mais cette chaîne HASH
REMPLACE ce que je suppose que ce qui était l'élément <param>
existant. J'ai lu la documentation pour XML::Simple
mais je ne peux pas voir quel argument devrait être utilisé pour empêcher cela.
Je ne peux pas penser à une raison pour laquelle de meilleurs modules XML peuvent être indisponibles pour vous, à moins que quelqu'un tient votre famille en otage. Voulez-vous expliquer le problème? – Borodin
Pas particulièrement. Il existe de nombreuses raisons pour lesquelles les bibliothèques alternatives ne sont pas disponibles dans ce numéro. Depuis quand stackoverflow était-il un site d'interrogation? –
Note: Bien que XML :: Simple soit très mauvais pour l'analyse de XML, il est positivement mauvais pour l'écriture XML. Il va générer du XML qui est différent du XML que vous lisez. Évitez ce module obsolète. – ikegami