Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Perl et XML

1 réponse
Avatar
Magalie
Bonjour,

Je cherche a traiter du Xml en perl, en gros j'ai un fichier mais ne
connaissant absolument pas le XML, je sais pas comment le recuperer en
variable :

Voici ce que j'ai en XML:

<responses>

<response provider="BT" product="FIXEDRATE" status="ok">
<number/>
<result status="ok"/>

<exchange>
<code>EMWELLI</code>
<name>WELLINGBOROUGH</name>
<state>E</state>
<readydate/>
</exchange>
<postcode>NN8 4BH</postcode>
<linelength/>
<download>2.0</download>
<upload/>
<color>green</color>
<message/>
</response>

<response provider="BT" product="MAX" status="ok">
<number/>
<result status="ok"/>

<exchange>
<code>EMWELLI</code>
<name>WELLINGBOROUGH</name>
<state>E</state>
<readydate/>
</exchange>
<postcode>NN8 4BH</postcode>
<linelength/>
<download>4.5</download>
<upload/>
<color>green</color>
<message/>
</response>

<response provider="BE" product="ADSL 2+" status="ok">
<number/>
<result status="ok"/>

<exchange>
<code>EMWELLI</code>
<name>wellingborough</name>
<state/>
<readydate/>
</exchange>
<postcode/>
<linelength/>
<download/>
<upload/>
<color/>
<message/>
</response>
</responses>

j'ai donc trois "reponses" mais je sais pas comment mettre cela dans
trois tableaux que je pourrais ensuite reexploiter dans mon code

merci d'avance pour votre aide
mag

1 réponse

Avatar
Paul Gaborit
À (at) Thu, 17 Feb 2011 18:17:36 +0100,
Magalie écrivait (wrote):

Je cherche a traiter du Xml en perl, en gros j'ai un fichier mais ne
connaissant absolument pas le XML, je sais pas comment le recuperer en
variable



Plusieurs niveaux de réponses :

1- Avec quelques expressions régulières et une lecture classique de
fichier, il ne semble pas très difficile de faire la lecture et de
récupérer les informations. Gros inconvénient : si c'est facile sur un
fichier d'exemple donné on s'aperçoit avec d'autres fichiers qu'on a
oublié plein de cas différents... surtout si les fichiers sont vraiment en
XML potentiellement complexe. Ce type de solutions ad'hoc est donc
déconseillée mais si vous ne savez pas comment la programmer vous aurez
encore plus de mal avec les solutions suivantes.

2- Utiliser le package XML::Simple. Il est censé lire un fichier XML et
le traduire en une structure Perl simple (voir les exemples).
D'expérience, tous ceux qui ont essayé de l'utiliser arrivent toujours à
un moment au limite du truc et passent à autre chose.

3- Utiliser un vrai module XML comme XML::LibXML ou
XML::Twig. C'est plus compliqué à mettre en oeuvre mais vous êtes sûr
que ça marchera quelque soit la complexité du XML et vous pourez
produire tout ce que vous voulez.


Autre solution (ne dépendant pas obligatoirement de Perl) : utiliser un
moteur XSLT pour transformer votre fichier XML.

Bon courage.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>