lire/écrire du xml

lire/écrire du xml - C#/.NET managed - Programmation

Marsh Posté le 12-07-2005 à 15:38:30    

hum bon j'ai un blème pour lire un fichier xml, et pour écrire aussi. en fait j'ai un fichier xml formater tel quel:

Code :
  1. <doc>
  2. <requetes id='1'>
  3.    <nom>
  4.       <![CDATA[req1]]>
  5.    </nom>
  6.    <contenu>
  7. ......
  8.    </contenu>
  9. </requetes>
  10. <requetes id='2'>
  11.    <nom>
  12.      <![CDATA[req2]]>
  13.    </nom>
  14.    <contenu>
  15. ......
  16.    </contenu>
  17. </requetes>
  18. </doc>


 
et j'aurai voulu récupéré un noeud "requetes" en fonction de son id pou le supprimer après.?
alors jusque là j'ai pu faire ça comme code mais je n'arrive pas à aller plus loin... svp de l'aide!!!!!
 

Code :
  1. Dim toto As New XmlDataDocument
  2. Dim noeud As XmlNode
  3. toto.Load(fichier)
  4. Dim element As XmlNodeList = toto.GetElementsByTagName("requetes" )
  5. For Each noeud In element
  6. Trace.Warn(noeud.Name)
  7. Next


mon premier problème est que noeud.name ne renvoitps l'id. comment la récup? et enfin comment effacer tout le noeud une fois la bonne id trouvée???
 
svp j'en ai marre de pas trouver (et comprendre aussi ...)  :cry:  
merci


---------------
Those empty walls / When we decline, from the confines of our mind / Don't waste your time, on coffins today / Don't you see their bodies burning?
Reply

Marsh Posté le 12-07-2005 à 15:38:30   

Reply

Marsh Posté le 12-07-2005 à 15:41:29    

C'est un peu normal, hein ;) Par quelle magie noire, est-ce que noeud.Name pourrait renvoyer l'id ? Y'a des fois :D

Reply

Marsh Posté le 12-07-2005 à 15:44:04    

Id est un attribut de ton noeud donc tu va le chercher dans la propriété Attributes du XmlNode :o

Reply

Marsh Posté le 12-07-2005 à 15:51:57    

FlorentG a écrit :

C'est un peu normal, hein ;) Par quelle magie noire, est-ce que noeud.Name pourrait renvoyer l'id ? Y'a des fois :D


ben ça j'en sais rien, je demande justement. merci de laisser aux débutants de ne pas tout connaitre....
 

chagarou a écrit :

Id est un attribut de ton noeud donc tu va le chercher dans la propriété Attributes du XmlNode :o


ok je viens de trouver ça:
noeud.Attributes("id" ).Value
 
maintenant que je connais le noeud que je veux effacer (avec tout ce qu'il y a dedans... comment je fais????


---------------
Those empty walls / When we decline, from the confines of our mind / Don't waste your time, on coffins today / Don't you see their bodies burning?
Reply

Marsh Posté le 12-07-2005 à 15:53:25    

psychatricmeuh a écrit :

ben ça j'en sais rien, je demande justement. merci de laisser aux débutants de ne pas tout connaitre....


C'est pas une question de tout connaître ;) C'est une question de bon-sens. Personnellement, je ne vois pas le lien entre un attribut, et la propriété name d'un node. Surtout après avoir lu la MSDN sur l'attribut Name, qui spécifie bien ce qui est retourné :??:

Reply

Marsh Posté le 12-07-2005 à 15:54:31    

As-tu regardé la MSDN au moins ? Dans la class XmlDocument, y'a la méthode RemoveChild qui te permet de le supprimer. Ce sont des méthodes DOM, donc on les retrouve partout (MSXML, JS, PHP, etc...)

Reply

Marsh Posté le 12-07-2005 à 15:58:17    

en meme temps je me suis pas plaint du fait que name ne renvoyais pas l'attribut. par contre je demandais comment le récup cet attribut. à savoir aussi qu'il y a 5mn je ne savais meme pas que "id" était un "attribut". donc oui je suis entièrement débutante c'est mon premier jour en XML j'en suis navrée.....
 
sinon je vais voir ce que je peux faire avec RemoveChild, merci


---------------
Those empty walls / When we decline, from the confines of our mind / Don't waste your time, on coffins today / Don't you see their bodies burning?
Reply

Marsh Posté le 12-07-2005 à 16:00:15    

Ah ok :sweat: Donc si c'est ton premier jour en XML, voit les notions d'éléments, d'attributs, ainsi que les fonctions DOM

Reply

Marsh Posté le 12-07-2005 à 16:21:37    

je trouve petit à petit merci.
pour remove child j'ai essayé en faisant:
toto.removechild(noeud), mais il m'a sorti une erreur comme quoi noeud n'était pas un child de toto. donc je teste en prenant le premier élement de mon fichier ("doc" ): doc.removechild(noeud)... je vais bien voir! ;)
merci!


---------------
Those empty walls / When we decline, from the confines of our mind / Don't waste your time, on coffins today / Don't you see their bodies burning?
Reply

Marsh Posté le 12-07-2005 à 16:22:15    

Il faut utiliser l'objet de type XmlDocument

Reply

Marsh Posté le 12-07-2005 à 16:22:15   

Reply

Marsh Posté le 12-07-2005 à 16:38:02    

en effet le "data" est inutile.
bon a priori j'y arrive. il me reste juste un détail:  
une fois le xmldocument modifié, comment l'enregistrer facilement dans le fichier? il me faudrait soit une méthode soit un moyen de passer tout le xmldocument en une string.
zavez une idée sur ce coup là?
merci en tout cas!


---------------
Those empty walls / When we decline, from the confines of our mind / Don't waste your time, on coffins today / Don't you see their bodies burning?
Reply

Marsh Posté le 12-07-2005 à 16:39:34    

Je peux te répondre, mais d'abord, je te redirige vers une fabuleuse chose qui répondra à 95% de tes questions : la MSDN [:dawa] Essaye de chercher, et si vraiment tu trouves pas, alors je te file la réponse. Mais essaye de chercher au moins 15 minutes :)


Message édité par FlorentG le 12-07-2005 à 16:39:41
Reply

Marsh Posté le 12-07-2005 à 17:01:50    

FlorentG a écrit :

Je peux te répondre, mais d'abord, je te redirige vers une fabuleuse chose qui répondra à 95% de tes questions : la MSDN [:dawa] Essaye de chercher, et si vraiment tu trouves pas, alors je te file la réponse. Mais essaye de chercher au moins 15 minutes :)


 
mouais, si ça répondait vraiment à 95% de mes questions je vous demanderais rien.... j'ai cherché sur la MSDN, et confirmation de ce que je pensais déjà: c'est le bordel, dur dur de trouver ce qu'on veut quand on sait pas le nom de la méthode qu'on cherche... :/ j'ai rarement eu la réponse à ce que je voulais, sauf quand je voulais une def de méthodes par exemple. y a tout ce qu'on veut c'est vrai, mais c'est trop mal foutu pour le moment (en tout cas pour moi :/)
 
ben en attendant j'ai a priori trouver 2/3 solutions (et aucune sur la MSDN :D)


---------------
Those empty walls / When we decline, from the confines of our mind / Don't waste your time, on coffins today / Don't you see their bodies burning?
Reply

Marsh Posté le 12-07-2005 à 17:06:41    

ok j'ai trouvé toto.save(fichier)
par contre j'ai vérifier, oui c'est dna sla msdn, elle m'avait échapper, je fais mon mea culpa, toutes mes excuses pour ce coup ci.... (ce qui n'elève rien à ce que j'en pense :D)
 
merci!


---------------
Those empty walls / When we decline, from the confines of our mind / Don't waste your time, on coffins today / Don't you see their bodies burning?
Reply

Marsh Posté le 13-07-2005 à 09:21:35    

psychatricmeuh a écrit :

mouais, si ça répondait vraiment à 95% de mes questions je vous demanderais rien.... j'ai cherché sur la MSDN, et confirmation de ce que je pensais déjà: c'est le bordel, dur dur de trouver ce qu'on veut quand on sait pas le nom de la méthode qu'on cherche... :/ j'ai rarement eu la réponse à ce que je voulais, sauf quand je voulais une def de méthodes par exemple. y a tout ce qu'on veut c'est vrai, mais c'est trop mal foutu pour le moment (en tout cas pour moi :/)
 
ben en attendant j'ai a priori trouver 2/3 solutions (et aucune sur la MSDN :D)


Oula :heink: C'est absolument pas un bordel, c'est super bien organisé, clair, net, y'a plein de tutorials, d'articles, etc... Et quand on sait pas le nom, c'est facile de trouver : les espaces de noms sont assez explicites, le résumé des méthodes permettant de retrouver très vite ce qu'on veut. D'ailleurs rien que le nom suffit en général.
 
C'est tout le contraire de la doc PHP par exemple [:dawa] On voit que M$ a des moyens et des gens pour faire de la doc de qualitaÿ

Reply

Marsh Posté le 13-07-2005 à 09:49:29    

bon d'accord c'est clair que par rapport à du gratuit c'est mieux c'est sur....
mais je maintiens que justement quitte à etre "payant" autant avoir un truc mieux.. enfin c'est que mon avis.
 
un doute m'assaille, perso je parle de la MSDN en ligne, pas celle fournit avec VS, cette dernière j'ai pas la place de l'installée (faut pas chercher à comprendre, mon entreprise joue au con à me filer un PC pourave pour dev...) donc je la connais à peine....


---------------
Those empty walls / When we decline, from the confines of our mind / Don't waste your time, on coffins today / Don't you see their bodies burning?
Reply

Marsh Posté le 13-07-2005 à 09:51:15    

On peut pas faire mieux [:spamafote] Sinon en temps normal, c'est presque pareil que la web, en plus rapide bien sûr.

Reply

Marsh Posté le 22-07-2005 à 14:11:20    

Et puis pour trouver un noeud grace à son attribut id, rien de tel qu'un GetElementById(), plutot qu'un GetElementsByTagName suivi d'un parcours pour trouver le bon.
 
Par contre il faut qu'un id soit unique dans le document (mais si ce n'est pas le cas, le document XML n'est de toute façon pas valide).

Reply

Marsh Posté le 22-07-2005 à 14:13:10    

Faut surtout aussi qu'il y ait un attribut déclaré étant de type ID, et que l'ouverture du fichier se fasse en mode validating

Reply

Sujets relatifs:

Leave a Replay

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