Ajouter un noeud dans un fichier xml déjà existant

Contenu du snippet

C'est peut être simple, mais j'ai cherché longtemps comme dirait l'autre...
Alors pour éviter à quelqu'un d'autre de galérer, voici un petit bout de code documenté

le fichier RSS est de ce type :
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="updates.xslt" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Ici c'est le Titre du flux</title>
<link>Ici l'hyperlien</link>
<description>Ici la description</description>
<language>fr</language>
<managingEditor>monmail@maboite.fr (Nom de la Boite)</managingEditor>
<webMaster>monmail@maboite.fr (Mon nom)</webMaster>
<ttl>60</ttl>

<item>
<title>le titre du noeud</title>
<guid>son ID</guid>
<link>son hyperlien</link>
<description>sa description</description>
</item>

<atom:link href=" ici l'adresse du flux " rel="self" type="application/rss+xml" />
</channel>
</rss>

et le source est plus bas

Source / Exemple :


<%
' Init du fichier XML
Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument")
    Objet_Document.async = False
    Objet_Document.Load(Server.MapPath("fichier.xml"))

'On cherche la première arborescence parente du noeud à insérer
set nodeNewItem = Objet_Document.selectSingleNode("//channel")
      
' On construit l'arborescence
Set nodeNew = Objet_Document.createNode(1,"item","")
set nodeTitle = Objet_Document.createNode(1,"title","")
set nodeTitleText = Objet_Document.createTextNode("Ici on mets le titre")
    nodeTitle.appendChild(nodeTitleText)
Set nodeGUID = Objet_Document.createNode(1,"guid","")
set nodeGUIDText = Objet_Document.createTextNode("Ici on mets l'ID")
    nodeGUID.appendChild(nodeGUIDText)
Set nodeLink = Objet_Document.createNode(1,"link","")
Set nodeLinkText = Objet_Document.createTextNode("Ici on mets le Lien")
    nodeLink.appendChild(nodeLinkText)
Set nodeDescription = Objet_Document.createNode(1,"description","")
set nodeDescriptionText = Objet_Document.createTextNode("Ixi on mets la description")
    nodeDescription.appendChild(nodeDescriptionText)

    nodeNew.appendChild(nodeTitle)
    nodeNew.appendChild(nodeGUID)
    nodeNew.appendChild(nodeLink)
    nodeNew.appendChild(nodeDescription)

'on se place sur la premier occurrences des noeuds identiques
    set nodeFirstItem = Objet_Document.selectSingleNode("//item")
'et on insère AVANT les autre noeud
    set res = nodeNewItem.insertBefore(nodeNew,nodeFirstItem)

'Ensuite on sauvegarde dans un fichier (moi j'ai été obligé de passé par un second fichier car il acceptait pas de s'auto-écraser mais ça doit s'optimiser)
    Objet_Document.Save Server.MapPath("fichier2.xml")

'On recharge le fichier qu'on vient d'enregistrer
Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument")
    Objet_Document.async = False
    Objet_Document.Load(Server.MapPath("fichier2.xml"))
'et on le sauvegarde dans le fichier initial
Objet_Document.Save Server.MapPath("fichier.xml")

'et c'est fini
%>

Conclusion :


c'est surement optimisable mais ça fonctionne

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.