Ajout d'une branche XML a un fichier existant

cs_megamario Messages postés 145 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013 - 21 janv. 2010 à 22:05
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 27 janv. 2010 à 09:36
Bonjour à tous,

Après mes problèmes avec mes collections, pour justement stocker mes données XML.

je m'attaque a l'ajout de données.
Il faut que :
- Je puisse ajouter une branche complètement nouvelle.
- Je puisse modifier une valeur, ou un attribut.

Pour la navigation dans mon XML j'ai choisi Xpath.

J'ai parfaitement compris pour la lecture mais je sache pour l'écriture car j'ai suivit un excellent tuto et je bloque alors que lorsque je debug, apparement je serait dans le bon niveau.

Voici un bout de mon XML:
<?xml version= "1.0" encoding="utf-8"?>

      
    </mesures>
    <etat>
      
        <Nom>Alarm LVD Open Util</Nom>
        <Obj>Code3</Obj>
        3
        <Format>1</Format>
        0
      
    </etat>
  </type>
  <type>
    etc .. même principe plusieurs fois
  </type>


Voila un résumer très condensé


Voila mon bout de code en C#
        
public bool AjouterSupervision(string FichierXML, string Module, string log)
        {
            DocXML   = new XPathDocument(FichierXML);
            Navig = DocXML.CreateNavigator();
            ExpXPath = "//config";
            MaNavi = Navig.Select(Navig.Compile(ExpXPath));
            MaNavi.MoveNext();
            MaNavi.Current.InsertElementAfter("", "type", "", ""); // il plante ici alors que MaNavi est bien en 1.
            MaNavi.Current.CreateAttribute("", "version", "", Module);
            MaNavi.Current.CreateAttribute("", "connexion", "", log);
            MaNavi.Current.AppendChildElement("", "mesures", "", "");
            MaNavi.Current.AppendChildElement("", "etat", "", "");
          //return true;
        }


J'ai reproduit le même principe qu'un tuto trouvé et la sa plante. Si vous avez une idée. Je vais plancher la dessus au lycée demain après avais finalisé mon UML.

Merci

Technicien en électricité Industriel (39 ans), en cours de reconversion BTS IRIS 2eme Année.
Au lycée pendant l'année scolaire, et en stage pendant les vacances scolaire.

1 réponse

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
27 janv. 2010 à 09:36
Salut,

Je n'ai pas beaucoup travaillé avec XPathDocument, donc je ne pourrai pas t'aider du côté de ton problème.
Par contre, je peux te dire que pour ma part, j'utilise la classe XmlDocument.

Ce qui te donne un code du genre:
using System.Xml;

XmlDocument doc = new XmlDocument();
doc.Load("ton fichier");//ou doc.LoadXml("xml");
XmlNode node = doc.SelectSingleNode("XPATH");
// pour insérer un noeud
XmlNode newNode = doc.CreateNode();
//Remplissage new node
node.AppendChild(newNode);


Je trouve cette classe très pratique à partir du moment où ton fichier n'est pas volumineux.

Je t'envoie un lien intéressant sur les documents XML et XPath (j'aime bien le mettre dans les posts relatifs au Xml): http://www.csharpfr.com/tutoriaux/XPATH-LANGUAGE_536.aspx.

Bon développement,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Rejoignez-nous