Problème d'écriture dans un XML [Résolu]

Signaler
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008
-
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008
-
Bonjour,
j'essais d'ajouter des éléments dans un xml, et je ne trouve pas d'où viennent les erreurs de mon code:
      
 XmlDocument docxml = new XmlDocument();
        //On ouvre le document xml
        docxml.Load("C:\\testecriture.xml");

        //On recupere le noeud racine dans la variable root
        XmlElement root = docxml.DocumentElement;
        docxml.WriteStartElement("srvtest");
        docxml.WriteAttributeString("value", "test1");
        docxml.Save("C:\\testecriture.xml");

J'ai commessage d'erreur: 'System.Xml.XmlDocument' ne contien pas de définition pour 'WrireStartElement', idem pour WriteAttributeString
Pourquoi tant de haine?

Merci

7 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Forcément, vu que le second paramètre de la méthode CreateElement(String, String) est : "namespaceURI   URI de l'espace de noms de l'élément."
Et non pas un quelconque nom d'attribut ou valeur.

XmlDocument doc = new XmlDocument();
doc.Load("C:\\testecriture.xml");



// Création de l'élément "serveur"
XmlElement elem = doc.CreateElement("serveur");
// Création de l'attribut "value"
XmlAttribute valueAttribute = doc.CreateAttribute("value");
valueAttribute.Value = "Toto";
// Ajout de l'attribut à l'élément "serveur"
elem.Attributes.Append(valueAttribute);
// Ajout de l'élément au document
doc.DocumentElement.AppendChild(elem);



doc.Save("C:\\testecriture.xml");







/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
à mon avis, c'est ca que tu veux :

        //On recupere le noeud racine dans la variable root
        XmlElement root = docxml.DocumentElement;
        root.WriteStartElement("srvtest");
        root.WriteAttributeString("value", "test1");
        docxml.Save("C:\\testecriture.xml");

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008

Arf...

j'ai toujours la même erreur, mais je me demande si c'est pas parce que WriteStartElement et WriteAttributeString font partie de XMLWriter? si oui, comment faire pour créer des lignes qui ont cette tête là: <srvtest value="test1"/> sans passer par XmlWriter, car avec XmlWriter, je n'arrive que à créer des xml (et encore...), mais pas à rajouter des lignes?

Merci
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008

Si j'écris:

docxml.CreateElement("srvtest");
docxml.CreateAttribute("value", "test1");
docxml.Save("C:\\testecriture.xml");

je n'ai pas d'erreur, mais je n'ai rien dans mon xml...
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Salut,

Comme le dit la doc, les méthodes Create* créent les instances et les retournent, mais ne les ajoutent pas au document.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008

J'ai beau lire la doc, je reste bloqué avec ca:
        XmlDocument doc = new XmlDocument();
        doc.Load("C:\\testecriture.xml");
        XmlElement elem = doc.CreateElement("serveur","value");
        doc.DocumentElement.AppendChild(elem);
        doc.Save("C:\\testecriture.xml")

qui me donne :   <serveur xmlns="value" /> alors que je voudrais:   <serveur value="Toto" />

tous ce que j'ai essaié d'autre m'éloigne du résultat que j'attends.
Comment faire pour modifier xmlns en value?

Merci
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008

C'est bon, c'est exactement ce que je voulais.

Merci pour l'aide