[C#/net & XML] Filtrer un fichier XML

Filtrer un fichier XML [C#/net & XML] - C#/.NET managed - Programmation

Marsh Posté le 07-03-2006 à 17:58:16    

Bon, voilà mon problème : j'ai un fichier .xml en entrée, avec un truc dans ce genre dedans
 

Code :
  1. <donnees>
  2. <evenement>
  3.     <date>1664</date>
  4.     <nom>leneuf</nom>
  5.     <détails>prout</détails>
  6.   </evenement>
  7. </donnees>


 
C'est un très gros fichier, avec plein d'evenements.
 
Je souhaite le filtrer en fonction de plusieurs chaines en paramètre, et conserver uniquement les balises correspondant aux paramètres, pour écrire ça dans un nouveau fichier XML ...
 
Et je ne vois pas du tout comment faire. J'ai regardé pour les XmlTextReader, a cause de l'occupation en mémoire, mais je ne vois pas comment virer un noeud s'il ne me convient pas, et écrire tout au fur et à mesure ailleurs ...
 
Si quelqu'un sait comment faire ça, ça m'arrangerait beaucoup, je n'ai rien trouvé de correspondant sur le net.
 
Merci


---------------
Quand j'entends le mot "société", je sors mon revolver...
Reply

Marsh Posté le 07-03-2006 à 17:58:16   

Reply

Marsh Posté le 08-03-2006 à 10:13:21    

Sans vraiment réfléchir,  
jdirais que tu as juste à utiliser le parseur XML de krosoft  
XmlTextReader et tu charges le tout dans un objet XmlDataDocument
 
Ensuite tu parcours ton XmlDataDocument à l'aide de requete XPath, ou soit des méthodes FirstSibling/ChildNodes ... et tu copies les noeuds qui t'intesse dans un autre XmlDataDocument que tu flush en suite via un XmlTextWriter dans un fichier cible.
 
OU mieux, de loin le plus performant et facile à maintenir !  tu fais un fichier XSLT qui va transformer ton fichier XML source en un autre fichier XML cibler avec l'uilisation de l'objet XslCompiledTransform, tu trouveras bcp de doc sur le net.
 
Bon courage


---------------
Galerie Photo (Canon)
Reply

Marsh Posté le 08-03-2006 à 23:30:34    

je me suis msi aux XSLT en fait et j'ai réussi facilement, c'est très facile, bien plus évolutif (juste la feuille de style) et visiblement performant :)
 
merci


---------------
Quand j'entends le mot "société", je sors mon revolver...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed