Filtrer un xml sur un element

Résolu
cs_Draven Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 8 octobre 2006 - 8 oct. 2006 à 12:14
cs_Draven Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 8 octobre 2006 - 8 oct. 2006 à 23:17
Bonjour a tous,

J'aimerai filtrer un fichier xml en fonction d'un element de celui-ci. Pour comprendre rien de tel qu'un exemple.
Alors voila mon fichier xml.

         <ville id="1" nom="Orly" ...>
              
                     
                     
                     
              
         </ville>
         <ville id="2" nom="Bretigny sur Orge" ...>
              
                     
                     
                     
              
         </ville>

Et je ne voudrais garder que les aeroports possédant des éléments "avionMilitaire".  Et avoir en resultat le fichier xml suivant :

         <ville id="2" nom="Bretigny sur Orge" ...>
              
                     
                     
                     
              
         </ville>

J'ai regarder du coté des classes xpathdocument, et des méthodes selectnodes avec une requete xpath, mais je ne sélectionne que les noeuds demandé, je n'obtiens pas mon fichier xml voulu.
Avez vous une idée?

7 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 oct. 2006 à 12:28
Salut,

Basiquement, une fois que tu as la liste des éléments à conserver, il te suffit de batir un autre XmlDocument et de le sauvegarder.
L'autre solution est que tu prennes la logique inverse et que tu sélectionnes les aeroports ne correspondant pas au critère et de les supprimer du document actuel.

/*
coq
MVP Visual C#
CoqBlog
*/
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
8 oct. 2006 à 12:38
Pour la requête XPath, elle est assez semblable à ce topic où j'avais donné une réponse...
En l'adaptant un peu, tu pourras arrivé au résultat que tu veux et créer un autre XMLDocument comme te le suggère coq.

<hr size="2" />VC# forever
3
cs_Draven Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 8 octobre 2006
8 oct. 2006 à 17:03
Je vous remercie de vos réponses.

Ca fait plusieurs jours que je tourne en rond je n'arrive à avoir ce que je souhaite.

Je sélectionne bien mes noeuds souhaités, je vais m'inspiré de ta réponse Bidou. Donc Une fois que j'ai mon objet xmlnodelist renseigné, je ne sais pas quoi faire pour avoir mon fichier xml filtré.

Pouvez vous m'aider pour ça, car la je nage complètement?

Merci.
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
8 oct. 2006 à 17:44
Avoir les informations en mémoire te suffit pas?
Si non, soit tu crées un nouveau fichier xml et tu écris le contenu de tes Nodes dedans, soit tu conserves ton fichier xml et tu supprimes ce qu'il y a en trop (voire solution de coq).

<hr size="2" />VC# forever
0

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

Posez votre question
cs_Draven Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 8 octobre 2006
8 oct. 2006 à 20:38
Donc je renseigne mon xmlnodelist avec une requete xpath du genre /pays/ville/aeroport/avionMilitaire. Dans ce cas les noeuds recupérés dans mon xmlnodeslist seront avionMilitaires.
Apres ça, je crée un nouveau  xmldocument par exemple et j'insere tous mes noeuds de mon xmlnodeslist.J'obtiendrai un fichier xml avec l'arborescence complète du noeud( c.a.d. tous les ancètres), ou juste les noeuds avionMilitaire?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
8 oct. 2006 à 20:48
Si tu suis l'exemple que je t'ai donné en lien, alors il te retourne tout ce qu'il y a dans le node <ville>

<hr size="2" />VC# forever
0
cs_Draven Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 8 octobre 2006
8 oct. 2006 à 23:17
ok merci pour tout!
0
Rejoignez-nous