Ajout dans un fichier xml

Signaler
Messages postés
4
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
23 novembre 2006
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
bonjour, j ai un problème avec mon code , il me génére une exception "racine manquante" , j ai pas pu résoudre ce problème. j espère qu il y a quelqun qui pourra m aider. merci d avance, voici une parti de mon code :

// j ai souligné la ligne ou le programme signale l erreur

void

CreateXmlFile(
String[] theArray,
string filename){

try{

FileStream f =
new
FileStream(filename,
FileMode.OpenOrCreate,
FileAccess.ReadWrite);

if (f.Length != 0){

XmlDocument doc =
new
XmlDocument(); doc.LoadXml(

@"<?xml version =""1.0"""+
" ?>" <gras>);


XmlNode racine = doc.DocumentElement;
if (racine.NodeType XmlNodeType.Element && racine.Name
"facture"){

XmlNodeList childreen;

XmlNode child;

XmlNode num_compte;

XmlNode id_client;

XmlNode montant;

int i;childreen = racine.ChildNodes;

for (i=0; i < childreen.Count; i++){

child = childreen.Item(i);

if (child.NodeType ==
XmlNodeType.Element){
if (child.Name "num_compte")num_compte child;
if (child.Name "id_client")id_client child;
if (child.Name "montant")montant child;

}

}

XmlElement element1 = doc.CreateElement(
"num_compte");

XmlElement element2 = doc.CreateElement(
"id_client");

XmlElement element3 = doc.CreateElement(
"montant");

XmlText text1 = doc.CreateTextNode(t_numc.Text);

XmlText text2 = doc.CreateTextNode(t_numcl.Text);

XmlText text3 = doc.CreateTextNode(t_montant.Text);element1.AppendChild(text1);

element2.AppendChild(text2);

element3.AppendChild(text3);

racine.AppendChild(element1);

racine.AppendChild(element2);

racine.AppendChild(element3);

/*XmlNode node = doc.CreateNode(XmlNodeType.Element, "facture", null);racine.AppendChild(node);

doc.Save(f);*/

}

}

else{

XmlTextWriter xmlw =
new
XmlTextWriter(f, System.Text.
Encoding.UTF8);xmlw.Formatting =

Formatting.Indented;xmlw.WriteStartDocument();

xmlw.WriteComment(

"Creation fichier XML test");
// commentairexmlw.WriteStartElement(

"factures");xmlw.WriteStartElement(

"facture");

String[] r = { t_numc.Text, t_numcl.Text, t_montant.Text };

int i = 0;

foreach (
string s
in theArray){

xmlw.WriteElementString(s, r[i]);

i++;

}

xmlw.WriteEndDocument();

xmlw.Flush();

//vide le bufferxmlw.Close();

// Close the writer}

}

finally{

}

}

3 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Salut,

As-tu regardé do côté de XmlWriter?
Peut-être qu'un code avec cet object serait plus approprié :

System.Xml.

XmlWriter xmlWriter = System.Xml.
XmlWriter.Create(
"filename");
xmlWriter.WriteStartDocument();

<hr size="2" />-Blog-
Messages postés
4
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
23 novembre 2006

le problème avec xmlwriter, c est qu il ecrase les données qui se trouvent dans le fichier en les remplcant par les nouveaux
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Bon, je ne sais pas ce que tu veux exactement faire, mais si tu veux absolument utiliser XmlDocument, il faut mettre dans le LoadXml (si tu veux y passer un string) au moins l'élément root. C'est à dire quelque chose comme ceci :

XmlDocument doc =
new
XmlDocument();
doc.LoadXml(
@"<?xml version=""1.0""?><Test/>");

<hr size="2" />-Blog-