Help_Save_XML

Signaler
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010
-
Messages postés
3
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
4 mai 2004
-
J’ai un souci avec le XML.
Quand je rentre une nouvelle information, les anciennes données sont perdues.
Parement, il faut lire le fichier avant de rentrée des nouvelles informations.

private void Save_XML()
{
XmlTextWriter xtw = new XmlTextWriter(@"toto.xml", System.Text.Encoding.UTF8);  
xtw.Formatting = Formatting.Indented;    
//xtw.Indentation = 3;   // c koi ?
xtw.WriteStartDocument();     
xtw.WriteComment("CouCou");  

xtw.WriteStartElement("contacts");  
xtw.WriteStartElement("contact"); 
 
xtw.WriteElementString("contact name", "JCpp");  

xtw.WriteEndElement();  
xtw.Flush(); 
xtw.Close();
}


Merci All

6 réponses

Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
Bonjour,

Attention ! un fichier XML est fortement structuré, les règles sont très précises pour qu'il soit "bien formé".
Il possède en particulier une seule racine.
Lorsque l'on rajoute des lignes à un fichier XML bien formé, on N'obtient PLUS un XML bien formé.

Exemple :
<racine>fichier correct </racine>

mais :
<racine>fichier correct </racine>
<racine>fichier devenu incorrect </racine>
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
Sinon,

le
xtw.Indentation = 3;

est le nombre de blancs correspondants à l'indentation automatique désirée

<racine>
<elt/>
</racine>
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010

Ok, ça ne répond pas vraiment à ma question
Comment écrire dans le fichier sans tout effacer
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010

Ci la structure est mal structuré, c pas bien grave pour moi.
J’utilise le XML pour stoker des données et j’ai besoin d’en ajouter au cours du programme.


<?xml version="1.0" encoding="ISO-8859-1"?>
<!--Dictionnaire A-->

<contacts>
<contact>
<mot>abrasion</mot><type>nf</type>
                  <définition>usure par frottement</définition>
</contact>
....
<contact>
<mot>acier</mot><type>nm</type>
                  <définition>alliage de fer et de carbone</définition>
</contact>

Ce morceau de code, je n’arrive plus à le refaire, je l’avais utilisé avant que mon PC grille pour Jenny. Je ne c’est plus au je les récupérer. C’est pour cela que j’ai besoin d’aide.

http://perso.wanadoo.fr/iar/IAb_Images.htm
Messages postés
1
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
29 avril 2004

Désolé mais j'ai actuellement le même soucis. Lorsque j'essai de généré une nouvelle ligne xml dans mon fichier il me remplace le code existant par le nouveau code.

Selon moi le problème vient du fait que je n'ai pas encore à ce jour l'équivalent xml pour me positionner à la fin d'une balise donné ou de mon fichier puis d'insérer un nouveau code xml à cet endroit.

Si l'un de vous à une réponse sur ce sujet, qu'il en fasse profiter tout le monde car c'est un sujet d'un importance capitale sur le projet sur lequel je suis présentement.

Merci à vous.
Messages postés
3
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
4 mai 2004

Salut, j'ai trouvé une solution pour un probléme similaire!!!
C'est pas tres propre mais ca fonctionne!!!
Alors voila ce que ca donne...

//////////
String Format="";
String Cool="";
int nb=0;
int i=0;
//Pour l'exemple du fichier Xml au dessus
Format="<contact><mot>bois</mot><type>nm</type>
<définition></définition>
</contact>";
//lecture du fichier
StreamReader SR=new StreamReader(@"//adresse du fichier");
string sTmp=SR.ReadLine();
//recupere le nombre de caractere
nb=sTmp.Length;
//9 pour la balise de fin </contact>
while(i<(nb-9))
{
Cool=Cool+sTmp[i];
i++;
}

Cool=Cool+Format+"</contact>";
SR.Close();
//Maintenant on sauvegarde
StreamWriter SW=new StreamWriter(@"adresse du fichier");
SW.WriteLine(Cool);
SW.Close();
//fin

Voila ce que ca donnerai!!!
mais il doit tres certainement avoir un moyen plus simple pour le faire.