Accès selon numéro de position

Si possible sans XPath

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous !

Aujourd'hui, c'est un souci de compréhension de SimpleXMLElement qui me pousse à créer un sujet.

J'ai un fichier XML de structure similaire à ceci.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<root>
    <informations source="…" cible="…">
        <transformations>
            <lgsource lg="54231" />
            <insertions></insertions>
            <suppressions></suppressions></transformations>
    </informations>
    <informations source="…" cible="…">
        <transformations></transformations>
    </informations></root>

Ce fichier représente des jeux de comparaisons entre différentes versions de fichiers texte. L'idée est qu'un fichier XML regroupe plusieurs jeux de comparaisons, mais que je ne traite que ceux que l'utilisateur choisit parmi ceux disponibles.

Dans l'idée de pouvoir simplifier mon code, j'aimerais donc créer une variable qui ne contiendrait qu'une balise <informations>, et celle-ci selon sa position. Pour cela, j'imaginais faire quelque chose comme $comparison = &$xml->informations[$versionPosition], mais il y a apparemment quelques subtilités qui m'échappent.
Dans un premier temps, il semble impossible d'accéder à un élément d'une collection selon une position "variable" : si je mets un nombre directement dans les crochets, je récupère bien mes informations (et celles de la bonne position), mais la variable ne semble pas passer — elle contient bien un nombre pourtant. Bon, à la limite, je peux bricoler un XPath avec les attributs, mais n'y aurait-il pas une possibilité plus simple ?

Merci d'avance

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Auteur du sujet

Bon, en attendant une éventuelle solution plus propre, je vais boucler sur tous les <informations> et, avec un compteur hors boucle (vu qu'avec foreach ($aSimpleXmlElement as $i => $element), on ne récupère pas l'index dans $i) je vais tester si on est à une position qu'il nous faut traiter ou pas.

J'avoue qu'un truc m'a surpris : autant, comme je le disais, $xml->informations[1] me retourne bien le deuxième <informations>, je constate que ça n'est pas nécessairement logique avec $xml->informations['attribut']

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte