Se connecter avec
S'enregistrer | Connectez-vous

XML - Ajouter un élément dans un fichier XML

Dernière réponse : dans Programmation

Bonjour, est-ce que quelqu'un pourrait poster un petit exemple simple permettant de créer une node à un endroit précis de l'arborescence d'un fichier XML ?

En fait, voici mon fichier actuel :

  1. <?xml version="1.0" standalone="yes"?>
  2. <Users>
  3. <User>
  4. <FirstName>Georges</FirstName>
  5. <LastName>Dupond</LastName>
  6. </User>
  7. </Users>


Je voudrais arriver à ce résultat :

  1. <?xml version="1.0" standalone="yes"?>
  2. <Users>
  3. <User>
  4. <FirstName>Georges</FirstName>
  5. <LastName>Dupond</LastName>
  6. </User>
  7. <User>
  8. <FirstName>Marcel</FirstName>
  9. <LastName>Dupuis</LastName>
  10. </User>
  11. </Users>


PS: Je me fout de l'ordre, par contre il faut que ce soit dans la bonne branche.
PS²: N'importe quel langage du moment que c'est avec MSXML, c'est en fait l'objet que j'ai du mal à maîtriser, et je trouve pas de doc pour créer un élément ailleurs qu'à la racine... :/ 

Autres pages sur : xml ajouter element fichier xml

Lassé par la pub ? Créez un compte

Bon, ben finalement, on n'est jamais mieu servi que par soit-même

Ca marche enfin !

Pour ceux que ça intéresse :


  1. void DoAction()
  2. {
  3. System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
  4. xmlDoc.Load(Server.MapPath("/xml/names.xml"));
  5.  
  6. System.Xml.XmlNode node = xmlDoc.SelectSingleNode("Users");
  7. System.Xml.XmlElement newNode = xmlDoc.CreateElement("User");
  8. System.Xml.XmlNode firstnameNode = xmlDoc.CreateElement("FirstName");
  9. firstnameNode.InnerText = FirstName.Text.Trim();
  10. System.Xml.XmlNode lastnameNode = xmlDoc.CreateElement("LastName");
  11. lastnameNode.InnerText = LastName.Text.Trim();
  12.  
  13. newNode.AppendChild(firstnameNode);
  14. newNode.AppendChild(lastnameNode);
  15. node.AppendChild(newNode);
  16.  
  17. xmlDoc.Save(Server.MapPath("/xml/names.xml"));
  18. Server.Transfer("test.aspx", true);
  19. }



A partir de cet exemple en VB (j'en ai pas chier du tout pour le trovuer :/ ) :


  1. Dim objPerson As IXMLDOMNode
  2.  
  3. Dim objChild As IXMLDOMNode
  4.  
  5. Set objPerson = objDOMDocument.createElement("PERSON")
  6.  
  7. objDOMDocument.documentElement.appendChild objPerson
  8.  
  9. Set objChild = objDOMDocument.createElement("NAME")
  10.  
  11. objChild.Text = "Monty Python"
  12.  
  13. objPerson.appendChild objChild

:)  :pt1cable: 
Alors là, vraiment mille mercis car cela faisait longtemps que je plantais sur le même problème. En plus ton code est en C#, ce que je voulais. Il ne me reste plus qu'à regarder comment ajouter des attributs à ce noeud et c'est bonnard !!!

MagicBuzz a écritBon, ben finalement, on n'est jamais mieu servi que par soit-même



Ca marche enfin !

Pour ceux que ça intéresse :


  1. void DoAction()
  2. {
  3. System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
  4. xmlDoc.Load(Server.MapPath("/xml/names.xml"));
  5.  
  6. System.Xml.XmlNode node = xmlDoc.SelectSingleNode("Users");
  7. System.Xml.XmlElement newNode = xmlDoc.CreateElement("User");
  8. System.Xml.XmlNode firstnameNode = xmlDoc.CreateElement("FirstName");
  9. firstnameNode.InnerText = FirstName.Text.Trim();
  10. System.Xml.XmlNode lastnameNode = xmlDoc.CreateElement("LastName");
  11. lastnameNode.InnerText = LastName.Text.Trim();
  12.  
  13. newNode.AppendChild(firstnameNode);
  14. newNode.AppendChild(lastnameNode);
  15. node.AppendChild(newNode);
  16.  
  17. xmlDoc.Save(Server.MapPath("/xml/names.xml"));
  18. Server.Transfer("test.aspx", true);
  19. }



A partir de cet exemple en VB (j'en ai pas chier du tout pour le trovuer :/ ) :


  1. Dim objPerson As IXMLDOMNode
  2.  
  3. Dim objChild As IXMLDOMNode
  4.  
  5. Set objPerson = objDOMDocument.createElement("PERSON")
  6.  
  7. objDOMDocument.documentElement.appendChild objPerson
  8.  
  9. Set objChild = objDOMDocument.createElement("NAME")
  10.  
  11. objChild.Text = "Monty Python"
  12.  
  13. objPerson.appendChild objChild

Lassé par la pub ? Créez un compte