parser du XML dont les valeurs sont dans les balises

parser du XML dont les valeurs sont dans les balises - Perl - Programmation

Marsh Posté le 24-02-2005 à 11:20:59    

j'ai une page Perl qui recoit un message en XML  
pour parser ce message XML je compte utiliser le module XML::Simple  
 
le "probleme" de XML::Simple, dapres les tutos que j'ai vu, c'est qu'il extrait les données entre 1 balise ouvrante et fermante :  
 
<balise ouvrante>donnée</balise fermante>  
 
or le message XML que je dois parser est pas a priori (je suis expert en XML pour le certifier) normalisé car les données sont dans les balises :  
 
fichier.xml:
 

Code :
  1. <balise_enveloppante>
  2. <balise_contenant_les_attributs attribut1="donnéeX" attribut2="donnéesY">
  3. </balise_enveloppante>


 
et moi je voudré extraire donnéeX et donneeY.
est ce possible avec le code suivant:
 
 

Code :
  1. #!/usr/bin/perl
  2. # utiliser le module
  3. use XML::Simple;
  4. # créer un objet
  5. $xml = new XML::Simple;
  6. # lire le fichier XML
  7. $data = $xml->XMLin("fichier.xml" );
  8. # accéder aux données XML
  9. print "la donnéeX est $data->{balise_contenant_les_attributs.attribut1}";


Message édité par jokaritaff le 24-02-2005 à 12:05:01
Reply

Marsh Posté le 24-02-2005 à 11:20:59   

Reply

Marsh Posté le 24-02-2005 à 12:09:41    

normalement tu devrais avoir des clés dans ton hash nommée "attribut1" '(avec la valeur donnéeX) et "attribut2" (avec la valeur donnéeY) pour les attributs
 
d'après mes souvenirs tu peux également jouer avec des options comme ContentKey pour changer la structure de données (avoir une clé "content" pour le contenu de la balise, les attributs étant des clés du hash)
 
hmmmm est-ce que j'ai été clair ? :)

Reply

Marsh Posté le 24-02-2005 à 12:22:17    

euu ben en fait j'ai attaqué cette histoire de XML en debut de semaine. donc on peut vraiment pas dire que je connaisse bien XML.
 
tout simplement il faudrait, avec les éléments de code que j'ai donné, que j'arrive a extraire les donnéeX et donneeY du message XML.
 
personnellement j'aimerais bien normaliser les message XML, mais certains messages que je dois parser viennent de differentes API dont je peux pas modifier le code.

Reply

Marsh Posté le 24-02-2005 à 13:37:16    

ca risque d'être compliqué en marchant à tatillons :/ je te conseillerais de chopper la DTD des applis dont tu recois les messages, et qu'ensuite tu avises pour le traitement des XML (comment les représenter dans le hash en jouant avec les options de XML Simple, pour faire un minimum de code propre)

Reply

Marsh Posté le 24-02-2005 à 13:58:58    

je vois theoriquement ce que tu veux dire
c a dire faire correspondre les attributs avec ce a quoi ils servent dans le document de definition du fichier xml (le DTD)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed