Filtrer un xml sur un element [Résolu]

Signaler
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
8 octobre 2006
-
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
8 octobre 2006
-
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

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
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
*/
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
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
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
8 octobre 2006

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.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
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
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
8 octobre 2006

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?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
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
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
8 octobre 2006

ok merci pour tout!