Accès selon numéro de position

Si possible sans XPath

a marqué ce sujet comme résolu.

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

+0 -0

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']

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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