Listbox interdépendante qui traitent un fichier xml

Résolu
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010 - 4 févr. 2010 à 14:30
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010 - 22 févr. 2010 à 14:44
bonjour,
apres avoir reussi (grace à l'aide de membres du forum ) à exploiter mon xml pour en insérer des données dans une listbox,je me retrouve dorénavant confronté à un autre problème...

en effet je voudrais faire intéragir le contenu d'une listbox par rapport à une autre.
j'explique mon idée :
Ici je voudrais dans une premiere listbox avoir la totalité des références présente dans le xml.
Dans une seconde Listbox je souhaiterais avoir le type de chaque ferrures ( cf xml ) et que lorsque je choisi un type dans la listbox,la liste des référence se mettent à jour ne montrant alors que les références concernées pas le type...

Je ne sais pas si mon explication est assez explicite,je pense qui faut créer un lien de dépendance entre les objets mais je ne vois pas comment faire en vb.net avec un fichier xml

merci bien et heu...je mets un extrait du xml a disposition ^^
 
<?xml version= "1.0" encoding="utf-8" ?>
<!--        Base de donnee des ferrures et goujons    -->
<!--                                                  -->
<!--        description des objet par Types           -->
<!--                                                  -->
<quincaillerie>
<objet Type="Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>(A) Dim_A Goujon</Dim_A>
<Dim_B>(B) Profondeur de percage</Dim_B>
<Dim_C>(C) Enfoncement centre de fixation</Dim_C>
<Dim_D>(D) Diametre boitier</Dim_D>
<Dim_E>(E) Dim_B Goujon</Dim_E>
<Dim_F>(F) Dim_C Goujon</Dim_F>
<Dim_G>Epaisseur plaque mini</Dim_G>
</Texts>
<Ref>262.26.246</Ref>
<Modele>Boitier Minifix 15-34</Modele>
 minifix15.jpg 
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>0.0</ValDim_A>
<ValDim_B>13.5</ValDim_B>
<ValDim_C>9.0</ValDim_C>
<ValDim_D>15.0</ValDim_D>
<ValDim_E>0.0</ValDim_E>
<ValDim_F>0.0</ValDim_F>
<ValDim_G>16.0</ValDim_G>
<NbPercages>3</NbPercages>
<!--        percage                                          -->


<X>34.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>15.0</Diametre>
13.5


0.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage                                          -->


<X>0.0</X>
<Y>0.0</Y>
<Z>-10.0</Z>


<Diametre>3.5</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage                                          -->


<X>0.0</X>
<Y>0.0</Y>
<Z>-10.0</Z>


<Diametre>3.5</Diametre>
34.0


120.0
<VecteurPercage>
<VX>1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


</objet>
<!--                                                  -->
<!--        Ferrure minifix                           -->
<!--                                                  -->
<objet Type ="Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>(A) Dim_A Goujon</Dim_A>
<Dim_B>(B) Profondeur de percage</Dim_B>
<Dim_C>(C) Enfoncement centre de fixation</Dim_C>
<Dim_D>(D) Diametre boitier</Dim_D>
<Dim_E>(E) Dim_B Goujon</Dim_E>
<Dim_F>(F) Dim_C Goujon</Dim_F>
<Dim_G>Epaisseur plaque mini</Dim_G>
</Texts>
<Ref>262.26.247</Ref>
<Modele>Boitier Minifix 20-20</Modele>
minifix15.jpg
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>0.0</ValDim_A>
<ValDim_B>13.5</ValDim_B>
<ValDim_C>9.0</ValDim_C>
<ValDim_D>15.0</ValDim_D>
<ValDim_E>0.0</ValDim_E>
<ValDim_F>0.0</ValDim_F>
<ValDim_G>16.0</ValDim_G>
<NbPercages>3</NbPercages>
<!--        percage                                          -->


<X>20.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>20.0</Diametre>
13.5


0.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage                                          -->


<X>0.0</X>
<Y>0.0</Y>
<Z>-10.0</Z>


<Diametre>4.5</Diametre>
20.0


120.0
<VecteurPercage>
<VX>1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage                                          -->


<X>0.0</X>
<Y>0.0</Y>
<Z>-10.0</Z>


<Diametre>4.5</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


</objet>
<!--                                                  -->
<!--        Equerre de siege 25x25 4 tous             -->
<!--                                                  -->
<objet Type= "Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>(A) Dim_A Goujon</Dim_A>
<Dim_B>(B) Profondeur de percage</Dim_B>
<Dim_C>(C) Enfoncement centre de fixation</Dim_C>
<Dim_D>(D) Diametre boitier</Dim_D>
<Dim_E>(E) Dim_B Goujon</Dim_E>
<Dim_F>(F) Dim_C Goujon</Dim_F>
<Dim_G>Epaisseur plaque mini</Dim_G>
</Texts>
<Ref>262.28.502</Ref>
<Modele>Equerre de siege 25mm</Modele>
 EquerreSiege25x25-4T.jpg 
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>0.0</ValDim_A>
<ValDim_B>13.5</ValDim_B>
<ValDim_C>9.0</ValDim_C>
<ValDim_D>15.0</ValDim_D>
<ValDim_E>0.0</ValDim_E>
<ValDim_F>0.0</ValDim_F>
<ValDim_G>16.0</ValDim_G>
<NbPercages>4</NbPercages>
<!--        percage  1                                        -->


<X>7.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>3.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  2                                        -->


<X>19.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>3.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage  3                                        -->


<X>0.0</X>
<Y>0.0</Y>
<Z>7.0</Z>


<Diametre>3.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage  4                                        -->


<X>0.0</X>
<Y>0.0</Y>
<Z>19.0</Z>


<Diametre>3.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


</objet>
<!--                                                  -->
<!--        Equerre de siege 100x100  6 trous         -->
<!--                                                  -->
<objet Type ="Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>(A) Dim_A Goujon</Dim_A>
<Dim_B>(B) Profondeur de percage</Dim_B>
<Dim_C>(C) Enfoncement centre de fixation</Dim_C>
<Dim_D>(D) Diametre boitier</Dim_D>
<Dim_E>(E) Dim_B Goujon</Dim_E>
<Dim_F>(F) Dim_C Goujon</Dim_F>
<Dim_G>Epaisseur plaque mini</Dim_G>
</Texts>
<Ref>260.28.510</Ref>
<Modele>Equerre de siege 100x100 6Trous</Modele>
EquerreSiege100x100-6T.jpg
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>0.0</ValDim_A>
<ValDim_B>13.5</ValDim_B>
<ValDim_C>9.0</ValDim_C>
<ValDim_D>15.0</ValDim_D>
<ValDim_E>0.0</ValDim_E>
<ValDim_F>0.0</ValDim_F>
<ValDim_G>16.0</ValDim_G>
<NbPercages>6</NbPercages>
<!--        percage   1                                       -->


<X>20.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>3.5</Diametre>
8.0


0.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage   2                                       -->


<X>52.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>3.5</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage   3                                       -->


<X>84.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>3.5</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage   4                                       -->


<X>0.0</X>
<Y>0.0</Y>
<Z>20.0</Z>


<Diametre>3.5</Diametre>
8.0


0.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage   5                                       -->


<X>0.0</X>
<Y>0.0</Y>
<Z>52.0</Z>


<Diametre>3.5</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage   6                                       -->


<X>0.0</X>
<Y>0.0</Y>
<Z>84.0</Z>


<Diametre>3.5</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


</objet>
<!--                                                  -->
<!--        Ferrure assemblage de meuble a visser     -->
<!--                                                  -->
<objet Type= "Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>(A) Dim_A Goujon</Dim_A>
<Dim_B>(B) Profondeur de percage</Dim_B>
<Dim_C>(C) Enfoncement centre de fixation</Dim_C>
<Dim_D>(D) Diametre boitier</Dim_D>
<Dim_E>(E) Dim_B Goujon</Dim_E>
<Dim_F>(F) Dim_C Goujon</Dim_F>
<Dim_G>Epaisseur plaque mini</Dim_G>
</Texts>
<Ref>262.55.710</Ref>
<Modele>Ferrure assemblage angulaire  4 trous</Modele>
 262-55-710.jpg 
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>0.0</ValDim_A>
<ValDim_B>13.5</ValDim_B>
<ValDim_C>9.0</ValDim_C>
<ValDim_D>15.0</ValDim_D>
<ValDim_E>0.0</ValDim_E>
<ValDim_F>0.0</ValDim_F>
<ValDim_G>16.0</ValDim_G>
<NbPercages>4</NbPercages>
<!--        percage  1                                  -->


<X>10.0</X>
<Y>12.5</Y>
<Z>0.0</Z>


<Diametre>3.5</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  2                                  -->


<X>10.0</X>
<Y>-12.5</Y>
<Z>0.0</Z>


<Diametre>3.5</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  3                                        -->


<X>0.0</X>
<Y>12.5</Y>
<Z>10.0</Z>


<Diametre>3.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage  4                                        -->


<X>0.0</X>
<Y>-12.5</Y>
<Z>10.0</Z>


<Diametre>3.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


</objet>	
<!--                                                  -->
<!--        Charniere  Panterra Classic               -->
<!--                                                  -->
<objet Type ="Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>Angle ouverture</Dim_A>
<Dim_B>Modele</Dim_B>
<Dim_C>Ref. Plaque</Dim_C>
<Dim_D>Modele</Dim_D>
<Dim_E>Ecart Porte-Cote</Dim_E>
<Dim_F>-</Dim_F>
<Dim_G>Fournisseur</Dim_G>
</Texts>
<Ref>348.01.500</Ref>
<Modele>Charniere Panterra Classic</Modele>
Panthera-classic-120deg.jpg
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>120.0</ValDim_A>
<ValDim_B>14</ValDim_B>
<ValDim_C>348.21.614</ValDim_C>
<ValDim_D>14</ValDim_D>
<ValDim_E>2.0</ValDim_E>
<ValDim_F>-</ValDim_F>
<ValDim_G>HAFELE</ValDim_G>
<NbPercages>6</NbPercages>
<!--        percage  1                                  -->


<X>17.5</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>35.0</Diametre>
12.8


0.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  2                                  -->


<X>28.5</X>
<Y>21.0</Y>
<Z>0.0</Z>


<Diametre>8.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  3                                        -->


<X>28.5</X>
<Y>-21.0</Y>
<Z>0.0</Z>


<Diametre>8.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  4                                        -->


<X>0.0</X>
<Y>0.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage  5                                        -->


<X>0.0</X>
<Y>32.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage  6                                        -->


<X>0.0</X>
<Y>-32.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


</objet>
<!--                                                  -->
<!--        Charniere  Metallamat-A  92 deg           -->
<!--                                                  -->
<objet Type= "Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>Angle ouverture</Dim_A>
<Dim_B>Modele</Dim_B>
<Dim_C>Ref. Plaque</Dim_C>
<Dim_D>Modele</Dim_D>
<Dim_E>Ecart Porte-Cote</Dim_E>
<Dim_F>-</Dim_F>
<Dim_G>Fournisseur</Dim_G>
</Texts>
<Ref>316.31.600</Ref>
<Modele>Charniere Metallamat-A 92 deg</Modele>
 Charniere_Metallamat-A-175Deg.jpg 
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>92.0</ValDim_A>
<ValDim_B>18</ValDim_B>
<ValDim_C>316.51.502</ValDim_C>
<ValDim_D>4</ValDim_D>
<ValDim_E>4.0</ValDim_E>
<ValDim_F>-</ValDim_F>
<ValDim_G>HAFELE</ValDim_G>
<NbPercages>5</NbPercages>
<!--        percage  1                                  -->


<X>20.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>40.0</Diametre>
12.5


0.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  2                                  -->


<X>27.5</X>
<Y>26.0</Y>
<Z>0.0</Z>


<Diametre>8.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  3                                        -->


<X>27.5</X>
<Y>-26.0</Y>
<Z>0.0</Z>


<Diametre>8.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  4                                        -->


<X>0.0</X>
<Y>16.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage  5                                        -->


<X>0.0</X>
<Y>-16.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


</objet>	
<!--                                                  -->
<!--        Charniere  Metallamat-A  175 deg           -->
<!--                                                  -->
<objet Type ="Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>Angle ouverture</Dim_A>
<Dim_B>Modele</Dim_B>
<Dim_C>Ref. Plaque</Dim_C>
<Dim_D>Modele</Dim_D>
<Dim_E>Ecart Porte-Cote</Dim_E>
<Dim_F>-</Dim_F>
<Dim_G>Fournisseur</Dim_G>
</Texts>
<Ref>316.31.600</Ref>
<Modele>Charniere Metallamat-A 175 deg</Modele>
Charniere_Metallamat-A-92Deg.jpg
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>175.0</ValDim_A>
<ValDim_B>18</ValDim_B>
<ValDim_C>316.51.502</ValDim_C>
<ValDim_D>4</ValDim_D>
<ValDim_E>4.0</ValDim_E>
<ValDim_F>-</ValDim_F>
<ValDim_G>HAFELE</ValDim_G>
<NbPercages>5</NbPercages>
<!--        percage  1                                  -->


<X>20.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>40.0</Diametre>
12.5


0.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  2                                  -->


<X>27.5</X>
<Y>26.0</Y>
<Z>0.0</Z>


<Diametre>8.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  3                                        -->


<X>27.5</X>
<Y>-26.0</Y>
<Z>0.0</Z>


<Diametre>8.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  4                                        -->


<X>0.0</X>
<Y>16.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage  5                                        -->


<X>0.0</X>
<Y>-16.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


</objet>	
<!--                                                  -->
<!--        Charniere  Metallamat-A pour erreurs      -->
<!--                                                  -->
<objet Type="Ferrure">
<Texts>
init
<Language>Fr</Language>
<Dim_A>Angle ouverture</Dim_A>
<Dim_B>Modele</Dim_B>
<Dim_C>Ref. Plaque</Dim_C>
<Dim_D>Modele</Dim_D>
<Dim_E>Ecart Porte-Cote</Dim_E>
<Dim_F>-</Dim_F>
<Dim_G>Fournisseur</Dim_G>
</Texts>
<Ref>316.31.600</Ref>
<Modele>Charniere Metallamat-A 75 deg</Modele>
Deg.jpg
<FileObject>FichFerrure.ipt</FileObject>
<TypeFerrure>1</TypeFerrure>
<ValDim_A>75.0</ValDim_A>
<ValDim_B>18</ValDim_B>
<ValDim_C>316.51.502</ValDim_C>
<ValDim_D>4</ValDim_D>
<ValDim_E>4.0</ValDim_E>
<ValDim_F>-</ValDim_F>
<ValDim_G>HAFELE</ValDim_G>
<NbPercages>5</NbPercages>
<!--        percage  1                                  -->


<X>20.0</X>
<Y>0.0</Y>
<Z>0.0</Z>


<Diametre>40.0</Diametre>
12.5


0.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  2                                  -->


<X>27.5</X>
<Y>26.0</Y>
<Z>0.0</Z>


<Diametre>8.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  3                                        -->


<X>27.5</X>
<Y>-26.0</Y>
<Z>0.0</Z>


<Diametre>8.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>0.0</VX>
<VY>0.0</VY>
<VZ>-1.0</VZ>
</VecteurPercage>


<!--        percage  4                                        -->


<X>0.0</X>
<Y>16.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


<!--        percage  5                                        -->


<X>0.0</X>
<Y>-16.0</Y>
<Z>37.0</Z>


<Diametre>5.0</Diametre>
8.0


120.0
<VecteurPercage>
<VX>-1.0</VX>
<VY>0.0</VY>
<VZ>0.0</VZ>
</VecteurPercage>


</objet>	
</quincaillerie>

16 réponses

cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
21 févr. 2010 à 11:08
Bonjour,
oui, c'est possible et la démarche est la même, voir ce bout de code :

        '*** Définitions du chemin de l'image et initiation de celle ci. 
        Dim xmlNavImage As XPathNavigator
        Dim MyImage As Bitmap

        '*** Définition d'une image de base au cas où il n'y aurait pas de réponse au bout du chemin indiqué.
        PictureBox1.Image = New Bitmap("SansImage.jpg")

        '*** Puis navigation vers l'image cible qui est envoyée au Picturebox.
        Dim xPathImage As String = xPathRef & "/ImagFile"
        xmlNavImage = xpathDoc.CreateNavigator().SelectSingleNode(xPathImage)
        Try
            MyImage = New Bitmap(xmlNavImage.InnerXml)
            PictureBox1.Image = CType(MyImage, Image)
        Catch ex As ArgumentException
        End Try


Là les images sont sous le "Debug", il faudra bien sûr indiquer le chemin du fichier des images.
3
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
22 févr. 2010 à 13:48
C'est à dire au niveau du dossier Bin ?
Dans ce cas le chemin est :
Dim FilePathImg As String = My.Application.Info.DirectoryPath & "\..\..\ressources\appimg"


My.Application.Info.DirectoryPath
recherche le dossier de l'exécutable soit le debug.
\..\..\
permet de remonter 2 fois dans l'arborescence des fichier de l'application soit au niveau
WindowsApplication1 qui contient le bin et ressources. Et on redescend au fichier image.

et le code appelant :
        '*** Définitions du chemin de l'image et initiation de celle ci. 
        Dim xmlNavImage As XPathNavigator
        Dim MyImage As Bitmap

        '*** Définition d'une image de base au cas où il n'y aurait pas de réponse au bout du chemin indiqué.
        PictureBox1.Image = New Bitmap(FilePathImg & "SansImage.jpg")

        '*** Puis navigation vers l'image cible qui est envoyée au Picturebox.
        Dim xPathImage As String = xPathRef & "/ImagFile"
        xmlNavImage = xpathDoc.CreateNavigator().SelectSingleNode(xPathImage)
        Try
            MyImage = New Bitmap(FilePathImg & xmlNavImage.InnerXml)
            PictureBox1.Image = CType(MyImage, Image)
        Catch ex As ArgumentException
        End Try
3
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
4 févr. 2010 à 22:28
Bonsoir
de quel type s'agit il? :
De l'attribut de "objet" qui dans l'extrait est toujours "Ferrure",
ou de l'élément "<TypeFerrure>" qui lui est toujours égal à 1.
0
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010
5 févr. 2010 à 09:15
bonjour,
désolé de répondre si tard.
il s agit de <modele> qui comprend un nom de ferrure
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
8 févr. 2010 à 18:33
Bonsoir,
voici un exemple :
un formulaire avec deux listbox et un bouton et le XML sous le "debug"

Imports System.Xml
Imports System.IO

Public Class Form1
    Dim fichier As String = "monFich.xml" 'Chemin du fichier XML à compléter si pas dans le "debug" de l'application.

    Private Sub OpenFile(ByVal pattern As String, ByVal recepteur As ListBox)
        '*** pattern = l'expression XPath pour rechercher les noeuds correspondants.
        '*** recepteur = le contrôle afficheur.

        '*** Représente un document XML en mémoire et charge les données XML spécifiées
        Dim doc As XmlDocument = New XmlDocument()
        doc.Load(fichier)

        '*** Sélectionne une liste de nœuds correspondant à l'expression XPath recherchée,
        '    et les stocke dans une collection 
        Dim nodeList As XmlNodeList
        Dim root As XmlElement = doc.DocumentElement
        nodeList = root.SelectNodes(pattern)

        '*** Reste à les récupérer dans la ListBox.
        For Each ref As XmlNode In nodeList
            recepteur.Items.Add(ref.InnerXml)
        Next

    End Sub

    Private Sub ElemLie(ByVal pattern As String, ByVal valNode As String, ByVal position As Integer, ByVal recepteur As ListBox)
        '*** pattern = l'expression XPath pour rechercher les noeuds correspondants.
        '*** valNode = la valeur cherchée.
        '*** psition = position du noeud frère dans l'arborescence du noeud parent.
        '*** recepteur = le contrôle afficheur.

        '*** Représente un document XML en mémoire et charge les données XML spécifiées
        Dim doc As XmlDocument = New XmlDocument()
        doc.Load(fichier)

        '*** Sélectionne une liste de nœuds correspondant à l'expression XPath recherchée,
        '    et les stocke dans une collection 
        Dim nodeList As XmlNodeList
        Dim root As XmlElement = doc.DocumentElement
        nodeList = root.SelectNodes(pattern)

        '*** Repère le modèle cliqué, remonte à son parent pour redescendre et sélectionner 
        '    un de ses frères, par sa  position dans la liste du noeud parent.
        For Each modele As XmlNode In nodeList
            If modele.InnerText = valNode Then
                recepteur.Items.Add(modele.ParentNode.ChildNodes.Item(position).InnerText)
            End If


        Next

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        OpenFile("/quincaillerie/objet/Modele", ListBox1)
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        ElemLie("/quincaillerie/objet/Modele", ListBox1.SelectedItem, 1, ListBox2)
    End Sub

End Class
0
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010
11 févr. 2010 à 11:18
merci beaucoup cela fonctionne!
j'avais un code proche du votre mais j'avais mal géré mon objet et j obtenait systematiquement la meme reference selon l objet...
merci encore pour cette précieuse aide ;)
0
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010
16 févr. 2010 à 15:03
bonjour,
mon programme progresse à grands pas et s'est en partie grace à vous et je vous remerci encore =)

Néamoins je cherche à étoffer mon filtrage de données et j'avou coincer un peu...
je voudrais qu'en selectionnant la référence obtenue grace au premier filtrage dans la listbox2 je puisse obtenir des données lui correspondants (dans une listbox ou autre peu importe pour le moment) comme par exemple " ValDim " .

j'arrive à charger tout les "ValDim" de mon xml mais je n arrive pas a établir le lien entre la référence selectionnée et le "ValDim" correspondant si bien qu'a la selection de la reference rien n'est retourné...

quelqu'un aurait une idée...ou deux?
0
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
17 févr. 2010 à 11:24
Bonjour,
voici une méthode possible à tester.

    Private Sub RecherchValDim(ByVal choix As String)
        '*** On change de méthode en utilisant la technologie xPath.
        '    Paraît que c'est plus rapide que XmlDocument

        Dim xpathDoc As XPathDocument
        Dim xmlNav As XPathNavigator
        '*** Requête : recherche du premier noeud "objet", ayant un noeud enfant dont la
        '              la valeur est "choix", soit la ref cliquée et enfin
        '              sélectionner le noeud recherché (ici "ValDim_A" par exemple).
        Dim xPathRef As String = "/quincaillerie/objet[Ref=""" & choix & """]/ValDim_A"

        '*** Chargement du document XML avec la classe XPathDocument (comme XmlDocument)
        xpathDoc = New XPathDocument(fichier)
        '*** Création d'un navigateur dont on utilise les méthodes. Ici pour sélectionner
        '    un seul noeud qui correspond à la requête définie plus haut.
        xmlNav = xpathDoc.CreateNavigator().SelectSingleNode(xPathRef)
        MessageBox.Show(xmlNav.Name & ", " & xmlNav.InnerXml)

    End Sub

    Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
        '*** Définition de la valeur cliquée.
        Dim choix As String = ListBox2.SelectedItem
        RecherchValDim(choix)

    End Sub


Par contre, si les ref sont les mêmes comme dans le fichier XML fourni, pour les 3 derniers "objet", la navigation stoppera toujours au premier trouvé et récupèrera sa valeur.
0
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010
17 févr. 2010 à 15:40
merci bien :)
par contre j'aimerais savoir deux choses...si je veux par exemple récuperer egalement le contenu de la balise <Dim_A> je dois changer cette methode :

Dim xPathRef As String = "/quincaillerie/objet/Texts/[Ref=""" & choix & """]/ValDim_A"

mais vu que <Dim_A> est antécédent a Ref dans mon xml,cela pose t-il problème?

Autre chose,si je veux recupérer tout les <ValDim> dans ma listbox je dois employer une methode avec un for each?

merci merci
0
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
17 févr. 2010 à 20:44
Bonsoir,
ta requête est fausse, tu recherche "Ref" dans "Texts" comme si il était son fils , alors qu'il est son frère (dans l'arborescence du XMl ils sont tous deux au rang 1 sous "objet") :
Texts/[Ref=""" & choix & """]

(Et le "/" est de trop).

Le but du jeu est de trouver le nœud "objet" correspondant à la "ref" choisie et le sélectionner.
(Pour savoir quel sera l'élément renvoyer, c'est simple on cherche le tout dernier"/" de la requête et le mot qui suit,
comme ci dessous, c'est bien "objet"):

        '*** Requête : recherche du premier noeud "objet", ayant un noeud enfant "Ref"
        '              dont la valeur correspond au choix du ListBox2.
        Dim xPathRef As String = "/quincaillerie/objet[Ref=""" & choix & """]" 


Ensuite on descend dans son arborescence pour y dénicher ses éléments et leur valeur qui nous intéresse.
Partant de mon exemple je modifie mon code, en ajoutant une ListBox3 à mon formulaire pour le résultat.

    Private Sub RecherchValDim(ByVal choix As String, ByVal recepteur As ListBox)
        '*** On change de méthode en utilisant la technologie xPath.
        '    Paraît que c'est plus rapide XmlDocument

        Dim xpathDoc As XPathDocument
        Dim xmlNavVal As XPathNavigator
        Dim xmlNavTexts As XPathNavigator
        '*** Requête : recherche du premier noeud "objet", ayant un noeud enfant "Ref"
        '              dont la valeur correspond au choix du ListBox2.
        Dim xPathRef As String = "/quincaillerie/objet[Ref=""" & choix & """]"

        '*** Ayant trouvé ce noeud parent, on descend dans l'arborescence de celui ci
        '    pour y extraire toutes les valeurs que l'on désire.
        Dim xPathText As String = xPathRef & "/Texts/Dim_A"
        Dim xPathVal As String = xPathRef & "/ValDim_A"

        '*** Chargement du document XML avec la classe XPathDocument (comme XmlDocument)
        xpathDoc = New XPathDocument(fichier)
        '*** Création d'un navigateur dont on utilise les méthodes. Ici pour sélectionner
        '    un seul noeud qui correspond à la requête définie plus haut.
        xmlNavVal = xpathDoc.CreateNavigator().SelectSingleNode(xPathVal)
        xmlNavTexts = xpathDoc.CreateNavigator().SelectSingleNode(xPathText)
        recepteur.Items.Add(xmlNavTexts.InnerXml & " : " & xmlNavVal.InnerXml)

    End Sub

    Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
        '*** Définition de la valeur cliquée.
        Dim choix As String = ListBox2.SelectedItem
        RecherchValDim(choix, ListBox3)

    End Sub


Sans oublier que "Ref" doit être unique pour chaque "objet".

Pour la seconde question j'y pense et vais voir si je trouve une solus.
0
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
18 févr. 2010 à 08:34
Bonjour,
un exemple pour récupérer une liste d'éléments :

    Private Sub RecherchValDim(ByVal choix As String, ByVal recepteur As ListBox)
        '*** On change de méthode en utilisant la technologie xPath.
        '    Paraît que c'est plus rapide XmlDocument
        Dim xpathDoc As XPathDocument
        Dim xmlNavVal As XPathNavigator
        Dim xmlNavTexts As XPathNavigator
        '*** Tableau des extensions de "Dim_" et de "ValDim_"
        Dim TIndex() As String = {"A", "B", "C", "D", "E", "F", "G"}

        '*** Requête : recherche du premier noeud "objet", ayant un noeud enfant "Ref"
        '              dont la valeur correspond au choix du ListBox2.
        Dim xPathRef As String = "/quincaillerie/objet[Ref=""" & choix & """]"
        '*** Chargement du document XML avec la classe XPathDocument (comme XmlDocument)
        xpathDoc = New XPathDocument(fichier)

        For Each idx As String In TIndex
            '*** Ayant trouvé ce noeud parent, on descend dans l'arborescence de celui ci
            '    pour y extraire toutes les valeurs que l'on désire.
            '*** Ici pour l'exemple, on va extraire les "Dim_" selon leur extension et
            '    leur adjoindre le "ValDim_" ayant la même extension.
            '    (Extensions définies dans le tableau "TIndex()" ).
            Dim xPathText As String = xPathRef & "/Texts/Dim_" & idx
            Dim xPathVal As String = xPathRef & "/ValDim_" & idx


            '*** Création d'un navigateur dont on utilise les méthodes. Ici pour sélectionner
            '    un seul noeud qui correspond à la requête définie plus haut.
            xmlNavVal = xpathDoc.CreateNavigator().SelectSingleNode(xPathVal)
            xmlNavTexts = xpathDoc.CreateNavigator().SelectSingleNode(xPathText)
            recepteur.Items.Add(xmlNavTexts.InnerXml & " : " & xmlNavVal.InnerXml)
        Next

    End Sub

    Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
        '*** Définition de la valeur cliquée.
        Dim choix As String = ListBox2.SelectedItem
        ListBox3.Items.Clear()
        RecherchValDim(choix, ListBox3)

    End Sub
0
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010
19 févr. 2010 à 09:25
Oooooooooo jolie!
Ce code arrive en effet à récuperer ce que je cherche ( je ne maitrise pas encore bien le recherche dans xml ^^ ) et je vous en remerci christioni c'est super :)

A tout hasard,pensez vous qu'il est possible d'utiliser la balise pour pointer sur un fichier image et renvoyer l'image ciblée dans une picturebox par exemple?
0
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010
22 févr. 2010 à 11:44
merci bien christoni,
j ai mis ton code dans mon for each de la methode "RecherchValDim" donc il devrait par defaut allé de le debug mais il me retourne l erreur stipulant qui ne trouvait pas l'élément...

j'ai donc fait des recherche pour definir mon propre repertoire "\ressources\appimg" et l'erreur est toujours la meme.

ps : l'erreur s'affiche au moment de le selection de la ref dans ma listbox2...

ps2: navré de repondre si tardivement week très chargé
0
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
22 févr. 2010 à 13:11
Déjà ne pas le mettre dans le for each, je l'ai mis à la fin comme ci dessous car on appelle 7 fois la même image.
Gaspi.
        For Each idx As String In TIndex
            '*** Ayant trouvé ce noeud parent, on descend dans l'arborescence de celui ci
            '    pour y extraire toutes les valeurs que l'on désire.
            '*** Ici pour l'exemple, on va extraire les "Dim_" selon leur extension et
            '    leur adjoindre le "ValDim_" ayant la même extension.
            '    (Extensions définies dans le tableau "TIndex()" ).
            Dim xPathText As String = xPathRef & "/Texts/Dim_" & idx
            Dim xPathVal As String = xPathRef & "/ValDim_" & idx


            '*** Création d'un navigateur dont on utilise les méthodes. Ici pour sélectionner
            '    un seul noeud qui correspond à la requête définie plus haut.
            xmlNavVal = xpathDoc.CreateNavigator().SelectSingleNode(xPathVal)
            xmlNavTexts = xpathDoc.CreateNavigator().SelectSingleNode(xPathText)
            recepteur.Items.Add(xmlNavTexts.InnerXml & " : " & xmlNavVal.InnerXml)
        Next

        '*** Définitions du chemin de l'image et initiation de celle ci. 
        Dim xmlNavImage As XPathNavigator
        Dim MyImage As Bitmap

        '*** Définition d'une image de base au cas où il n'y aurait pas de réponse au bout du chemin indiqué.
        PictureBox1.Image = New Bitmap("SansImage.jpg")

        '*** Puis navigation vers l'image cible qui est envoyée au Picturebox.
        Dim xPathImage As String = xPathRef & "/ImagFile"
        xmlNavImage = xpathDoc.CreateNavigator().SelectSingleNode(xPathImage)
        Try
            MyImage = New Bitmap(xmlNavImage.InnerXml)
            PictureBox1.Image = CType(MyImage, Image)
        Catch ex As ArgumentException
        End Try

    End Sub


Pour l'erreur, il s'agit, je pense d'un mauvais chemin.
Il faut aussi vérifier que les images aient bien la même orthographe que le fichier XML.
Dans l'arborescence de ton appli, où se trouve le dossier Ressource ?
0
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010
22 févr. 2010 à 13:18
il se trouve :
WindowsApplication1\WindowsApplication1\ressource
0
goredo Messages postés 26 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 mars 2010
22 févr. 2010 à 14:44
exact =)
j'avais zapé un " ..."
merci pour tout une fois encore !!!
0
Rejoignez-nous