Enregistrer un Xelement dans un fichier XML via XmlWriter

PtitRun Messages postés 6 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 octobre 2009 - 13 févr. 2009 à 14:07
PtitRun Messages postés 6 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 octobre 2009 - 15 févr. 2009 à 22:14
Bonjour à tous !

J'ai un document xml existant :
<Document>

<Entete>
...
</Entete>
<Liste>
<Element></Element>
...
</Liste>
</Document>

J'ai besoin d'insérer des XElement contenant un nouvel enregistrement <Element> en passant par un XmlWriter (pas question de charger tout le document en mémoire)
Je n'ai pas trouvé de méthode pour dire au writer d'ajouter un noeud dans un noeud existant...

Auriez vous une idée ?

Merci d'avance !

3 réponses

titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
15 févr. 2009 à 21:58
Salut

Personellement, je passerai par un XmlDocument.
Ensuite tu fais une tite Xpath pour trouver le noeud a enrichir et ensuite un tit coup de XmlNode.ChildNodes.Add(new XmlNode());

Et a la fin, XmlDocument.Save() pour fermer ton fichier.
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
15 févr. 2009 à 22:02
oups, désolé, je n'avais pas lu la partie ou tu dis que tu ne veux pas tout charger en mémoire.

Dans ce cas, je pense qu'il vaudrait mieux que tu crée un fichier XML vide.
Ensuite tu fais une lecture séquentielle de ton fichier source. Quand tu trouve l'endroit ou tu veux mettre ton fragment, tu l'insere. Puis ton continue à transférer le reste de ton XMl source dans ton Xml.

A la fin, tu supprime le fichier source et tu renomme le nouveau.

Comme ça, pas de grosse charge mémoire. Il est gris ton fichier à mettre à jour ?
0
PtitRun Messages postés 6 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 octobre 2009
15 févr. 2009 à 22:14
Salut !

Merci pour la réponse !
Pour la taille du fichier, je ne peux pas la connaitre à l'avance, mais il pourra être gros (surtout pour la quantité de mémoire présente sur le périphérique qui l'utilisera !)

Je vais tester ta méthode !

Merci !
0