Bonjour a tous,
Actuellement j'utilise XMLBeam comme API pour parser du XML, j'en suis très content et fonctionne très bien.
Avec cette API on peut mapper des requête XPath sur des méthode Java.
mais j'ai un problème que je ne pense pas résoudre avec seulement du XPath, voici mon problème.
j'ai un XML de cette forme :
<contents xsu:type="struct" name="nom1" />
<members name="nom2" type="#nom5"/>
<members name="nom3" type="#nom6"/>
<members name="nom4" type="#nom7"/>
</contents>
<contents xsi:type="integer" name="nom5" size=4/>
<contents xsu:type="struct" name="nom6" />
<members name="nom2" type="#nom8"/>
<members name="nom3" type="#nom9"/>
</contents>
<contents xsi:type="integer" name="nom8" size=8/>
<contents xsi:type="integer" name="nom9" size=32/>
<contents xsi:type="integer" name="nom7" size=16/>
Malheureusement je ne peux pas modifier le XML,
Comme on peut le voir, l'attribut type fait référence a un autre attribut name dans un autre contents, j'ai besoin de naviguer au plus profond jusqu'au point ou xsi:type contienne integer.
Je ne voit pas trop comment prendre ce problème, pensais le faire de manière récursive dans ce style en pseudo code :
Mais codé en Java, ça marche pas des masses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 getSize(ligneXml){ newLigneXml = getLigneXmlWithAttribute(ligneXml.type); if(newligneXml.xsi:type = integer){ return ligneXml.size; }else{ this.getsize(newLigneXml); } }
vous aurez un solutions?
Merci de votre aide.
Partager