Je voudrais parser un fichier XML avec XML::Simple.
J'y arrive sans soucis, ça marche même très bien.
Mais il y a un truc que je voudrai faire, c'est de pouvoir forcer
certains éléments en tableau. Pour cela cool, il y a ForceArray[name].
Ca marche aussi bien sauf dans un cas particulier:
J'ai un élément 'lien' qui se retrouve dans plusier type sans avoir la
même définition. Pour certains, l'élément est optionnel, pour
d'autres, il peut se répéter plusieurs fois.
Un exemple:
<lessites>
<titre>La liste des sites</titre>
<lien>
<description>Le plus beau site du monde</description>
<lien>http://www.monsite.com/</lien>
<lien>
<lien>
<description>Le plus moche site de la Terre</description>
<lien>http://www.mochesite.com/</lien>
<lien>
<lien>
<description>Le site classe</description>
<lien>http://www.siteclasse.com/</lien>
<lien>
<lessites>
On note que 'lessites => lien' doit être forcé avec ForceArray, mais
cela n'est pas le cas de 'lessites => lien => lien'.
Peite précision, je ne peux pas changer la définition du Schema XML.
Juste pour être sûr, il manque des '/' dans les balises fermantes ou c'est le schéma utilisé qui veut cela ?
-- Denis
Pierre Pintaric
Effectivement, il manque quelque / Mais je l'ai écrit en live pour illustrer la question.
Voici le flux corrigé:
<lessites> <titre>La liste des sites</titre> <lien> <description>Le plus beau site du monde</description> <lien>http://www.monsite.com/</lien> </lien> <lien> <description>Le plus moche site de la Terre</description> <lien>http://www.mochesite.com/</lien> </lien> <lien> <description>Le site classe</description> <lien>http://www.siteclasse.com/</lien> </lien> </lessites>
On Tue, 31 May 2005 17:29:06 +0200, Denis -esp2008- wrote:
Bonsoir Pierre,
Juste pour être sûr, il manque des '/' dans les balises fermantes ou c'est le schéma utilisé qui veut cela ?
Pierre Pintaric http://www.genuts.com/
Effectivement, il manque quelque /
Mais je l'ai écrit en live pour illustrer la question.
Voici le flux corrigé:
<lessites>
<titre>La liste des sites</titre>
<lien>
<description>Le plus beau site du monde</description>
<lien>http://www.monsite.com/</lien>
</lien>
<lien>
<description>Le plus moche site de la Terre</description>
<lien>http://www.mochesite.com/</lien>
</lien>
<lien>
<description>Le site classe</description>
<lien>http://www.siteclasse.com/</lien>
</lien>
</lessites>
On Tue, 31 May 2005 17:29:06 +0200, Denis -esp2008-
<esp2008@apinc.org.enleve-ceci.et.cela> wrote:
Bonsoir Pierre,
Juste pour être sûr, il manque des '/' dans les balises fermantes ou
c'est le schéma utilisé qui veut cela ?
Effectivement, il manque quelque / Mais je l'ai écrit en live pour illustrer la question.
Voici le flux corrigé:
<lessites> <titre>La liste des sites</titre> <lien> <description>Le plus beau site du monde</description> <lien>http://www.monsite.com/</lien> </lien> <lien> <description>Le plus moche site de la Terre</description> <lien>http://www.mochesite.com/</lien> </lien> <lien> <description>Le site classe</description> <lien>http://www.siteclasse.com/</lien> </lien> </lessites>
On Tue, 31 May 2005 17:29:06 +0200, Denis -esp2008- wrote:
Bonsoir Pierre,
Juste pour être sûr, il manque des '/' dans les balises fermantes ou c'est le schéma utilisé qui veut cela ?
Pierre Pintaric http://www.genuts.com/
Michel Rodriguez
Pierre Pintaric wrote:
Mais il y a un truc que je voudrai faire, c'est de pouvoir forcer certains éléments en tableau. Pour cela cool, il y a ForceArray[name].
Ca marche aussi bien sauf dans un cas particulier:
J'ai un élément 'lien' qui se retrouve dans plusier type sans avoir la même définition. Pour certains, l'élément est optionnel, pour d'autres, il peut se répéter plusieurs fois.
Un exemple:
<lessites> <titre>La liste des sites</titre> <lien> <description>Le plus beau site du monde</description> <lien>http://www.monsite.com/</lien> <lien> [...] <lessites>
On note que 'lessites => lien' doit être forcé avec ForceArray, mais cela n'est pas le cas de 'lessites => lien => lien'.
Peite précision, je ne peux pas changer la définition du Schema XML.
Ton schema ne me semble vraiment pas optimal, 'lien' est utilise dans 2 sens assez different. Mais bon, des fois on fait avec ce qu'on a...
La solution, il me semble, ca serait de te rammener a un cas plus simple, ou les 2 types de liens seraient differencies. Le XML d'origine est peut etre pas terrible, mais ca ne t'empeche pas de l'ameliorer un peu pour pouvoir mieux travailler avec, quitte a le re-degrader en fin de traitement.
Un petit filtre prealable, avec XML::Parser, XSLT, ou un truc comme ca, ou tu change les 'lien' fils de 'lessites' en 'site' par example.
Et bien sur tu peut faire ca directement avec XML::Twig, en retravaillant to arbre pour changer les 'liens', puis en utilisant la methode 'simplify' qui te renvoie la meme structure que XML::Simple.
-- mirod
Pierre Pintaric wrote:
Mais il y a un truc que je voudrai faire, c'est de pouvoir forcer
certains éléments en tableau. Pour cela cool, il y a ForceArray[name].
Ca marche aussi bien sauf dans un cas particulier:
J'ai un élément 'lien' qui se retrouve dans plusier type sans avoir la
même définition. Pour certains, l'élément est optionnel, pour
d'autres, il peut se répéter plusieurs fois.
Un exemple:
<lessites>
<titre>La liste des sites</titre>
<lien>
<description>Le plus beau site du monde</description>
<lien>http://www.monsite.com/</lien>
<lien>
[...]
<lessites>
On note que 'lessites => lien' doit être forcé avec ForceArray, mais
cela n'est pas le cas de 'lessites => lien => lien'.
Peite précision, je ne peux pas changer la définition du Schema XML.
Ton schema ne me semble vraiment pas optimal, 'lien' est utilise dans 2
sens assez different. Mais bon, des fois on fait avec ce qu'on a...
La solution, il me semble, ca serait de te rammener a un cas plus
simple, ou les 2 types de liens seraient differencies. Le XML d'origine
est peut etre pas terrible, mais ca ne t'empeche pas de l'ameliorer un
peu pour pouvoir mieux travailler avec, quitte a le re-degrader en fin
de traitement.
Un petit filtre prealable, avec XML::Parser, XSLT, ou un truc comme ca,
ou tu change les 'lien' fils de 'lessites' en 'site' par example.
Et bien sur tu peut faire ca directement avec XML::Twig, en
retravaillant to arbre pour changer les 'liens', puis en utilisant la
methode 'simplify' qui te renvoie la meme structure que XML::Simple.
Mais il y a un truc que je voudrai faire, c'est de pouvoir forcer certains éléments en tableau. Pour cela cool, il y a ForceArray[name].
Ca marche aussi bien sauf dans un cas particulier:
J'ai un élément 'lien' qui se retrouve dans plusier type sans avoir la même définition. Pour certains, l'élément est optionnel, pour d'autres, il peut se répéter plusieurs fois.
Un exemple:
<lessites> <titre>La liste des sites</titre> <lien> <description>Le plus beau site du monde</description> <lien>http://www.monsite.com/</lien> <lien> [...] <lessites>
On note que 'lessites => lien' doit être forcé avec ForceArray, mais cela n'est pas le cas de 'lessites => lien => lien'.
Peite précision, je ne peux pas changer la définition du Schema XML.
Ton schema ne me semble vraiment pas optimal, 'lien' est utilise dans 2 sens assez different. Mais bon, des fois on fait avec ce qu'on a...
La solution, il me semble, ca serait de te rammener a un cas plus simple, ou les 2 types de liens seraient differencies. Le XML d'origine est peut etre pas terrible, mais ca ne t'empeche pas de l'ameliorer un peu pour pouvoir mieux travailler avec, quitte a le re-degrader en fin de traitement.
Un petit filtre prealable, avec XML::Parser, XSLT, ou un truc comme ca, ou tu change les 'lien' fils de 'lessites' en 'site' par example.
Et bien sur tu peut faire ca directement avec XML::Twig, en retravaillant to arbre pour changer les 'liens', puis en utilisant la methode 'simplify' qui te renvoie la meme structure que XML::Simple.
-- mirod
Pierre Pintaric
OK, merci, c'est une bonne idée, je vais l'essayer de ce pas.
Pierre
On Wed, 01 Jun 2005 07:28:26 +0200, Michel Rodriguez wrote:
Pierre Pintaric wrote:
Mais il y a un truc que je voudrai faire, c'est de pouvoir forcer certains éléments en tableau. Pour cela cool, il y a ForceArray[name].
Ca marche aussi bien sauf dans un cas particulier:
J'ai un élément 'lien' qui se retrouve dans plusier type sans avoir la même définition. Pour certains, l'élément est optionnel, pour d'autres, il peut se répéter plusieurs fois.
Un exemple:
<lessites> <titre>La liste des sites</titre> <lien> <description>Le plus beau site du monde</description> <lien>http://www.monsite.com/</lien> <lien> [...] <lessites>
On note que 'lessites => lien' doit être forcé avec ForceArray, mais cela n'est pas le cas de 'lessites => lien => lien'.
Peite précision, je ne peux pas changer la définition du Schema XML.
Ton schema ne me semble vraiment pas optimal, 'lien' est utilise dans 2 sens assez different. Mais bon, des fois on fait avec ce qu'on a...
La solution, il me semble, ca serait de te rammener a un cas plus simple, ou les 2 types de liens seraient differencies. Le XML d'origine est peut etre pas terrible, mais ca ne t'empeche pas de l'ameliorer un peu pour pouvoir mieux travailler avec, quitte a le re-degrader en fin de traitement.
Un petit filtre prealable, avec XML::Parser, XSLT, ou un truc comme ca, ou tu change les 'lien' fils de 'lessites' en 'site' par example.
Et bien sur tu peut faire ca directement avec XML::Twig, en retravaillant to arbre pour changer les 'liens', puis en utilisant la methode 'simplify' qui te renvoie la meme structure que XML::Simple.
Pierre Pintaric http://www.genuts.com/
OK, merci, c'est une bonne idée, je vais l'essayer de ce pas.
Pierre
On Wed, 01 Jun 2005 07:28:26 +0200, Michel Rodriguez <mirod@mirod.org>
wrote:
Pierre Pintaric wrote:
Mais il y a un truc que je voudrai faire, c'est de pouvoir forcer
certains éléments en tableau. Pour cela cool, il y a ForceArray[name].
Ca marche aussi bien sauf dans un cas particulier:
J'ai un élément 'lien' qui se retrouve dans plusier type sans avoir la
même définition. Pour certains, l'élément est optionnel, pour
d'autres, il peut se répéter plusieurs fois.
Un exemple:
<lessites>
<titre>La liste des sites</titre>
<lien>
<description>Le plus beau site du monde</description>
<lien>http://www.monsite.com/</lien>
<lien>
[...]
<lessites>
On note que 'lessites => lien' doit être forcé avec ForceArray, mais
cela n'est pas le cas de 'lessites => lien => lien'.
Peite précision, je ne peux pas changer la définition du Schema XML.
Ton schema ne me semble vraiment pas optimal, 'lien' est utilise dans 2
sens assez different. Mais bon, des fois on fait avec ce qu'on a...
La solution, il me semble, ca serait de te rammener a un cas plus
simple, ou les 2 types de liens seraient differencies. Le XML d'origine
est peut etre pas terrible, mais ca ne t'empeche pas de l'ameliorer un
peu pour pouvoir mieux travailler avec, quitte a le re-degrader en fin
de traitement.
Un petit filtre prealable, avec XML::Parser, XSLT, ou un truc comme ca,
ou tu change les 'lien' fils de 'lessites' en 'site' par example.
Et bien sur tu peut faire ca directement avec XML::Twig, en
retravaillant to arbre pour changer les 'liens', puis en utilisant la
methode 'simplify' qui te renvoie la meme structure que XML::Simple.
OK, merci, c'est une bonne idée, je vais l'essayer de ce pas.
Pierre
On Wed, 01 Jun 2005 07:28:26 +0200, Michel Rodriguez wrote:
Pierre Pintaric wrote:
Mais il y a un truc que je voudrai faire, c'est de pouvoir forcer certains éléments en tableau. Pour cela cool, il y a ForceArray[name].
Ca marche aussi bien sauf dans un cas particulier:
J'ai un élément 'lien' qui se retrouve dans plusier type sans avoir la même définition. Pour certains, l'élément est optionnel, pour d'autres, il peut se répéter plusieurs fois.
Un exemple:
<lessites> <titre>La liste des sites</titre> <lien> <description>Le plus beau site du monde</description> <lien>http://www.monsite.com/</lien> <lien> [...] <lessites>
On note que 'lessites => lien' doit être forcé avec ForceArray, mais cela n'est pas le cas de 'lessites => lien => lien'.
Peite précision, je ne peux pas changer la définition du Schema XML.
Ton schema ne me semble vraiment pas optimal, 'lien' est utilise dans 2 sens assez different. Mais bon, des fois on fait avec ce qu'on a...
La solution, il me semble, ca serait de te rammener a un cas plus simple, ou les 2 types de liens seraient differencies. Le XML d'origine est peut etre pas terrible, mais ca ne t'empeche pas de l'ameliorer un peu pour pouvoir mieux travailler avec, quitte a le re-degrader en fin de traitement.
Un petit filtre prealable, avec XML::Parser, XSLT, ou un truc comme ca, ou tu change les 'lien' fils de 'lessites' en 'site' par example.
Et bien sur tu peut faire ca directement avec XML::Twig, en retravaillant to arbre pour changer les 'liens', puis en utilisant la methode 'simplify' qui te renvoie la meme structure que XML::Simple.