Aggiornare File XML con ASP: Introduzione

1 giugno 2007 | Sviluppo Web | 2 Commenti

Aggiornare file XML tramite ASP è un’operazione molto semplice. L’oggetto necessario per svolgere il compito è, come d’abitudine, il MSXML2.DOMDocument.4.0. Per quanto riguarda i metodi da utilizzare dobbiamo fare una distinzione fra quelli che riguardano l’aggiornamento e quelli che riguardano invece l’aggiunta di nuovi nodi.

Nota: il codice XML che utilizzerò per gli esempi di questo articolo è ripreso dall’intervento Accedere ad un File XML con ASP. Per rendere la lettura più semplice riporto comunque il codice:

<?xml version="1.0" encoding="iso-8859-1"?>
	<listaprodotti>
		<prodotto id="1" nome="Sum41 - Does this look infected">Ultimo album del famoso gruppo punk-rock</prodotto>
		<prodotto id="2" nome="Iron Maiden - The best of the beast">Album fantastico!</prodotto>
</listaprodotti>

Aggiornamento di nodi o attributi già esistenti

E’ relativamente semplice aggiornare un file XML. Il metodo più pratico è riportato nel listato seguente:

<%
'Oggetto XML
Set objXML = Server.CreateObject("Msxml2.DOMDocument.4.0")

'Carico i dati XML
objXML.async = False
objXML.load(Server.MapPath("esempio.xml"))

'Procedo all'aggiornamento
set objData = objXML.selectSingleNode("listaprodotti/prodotto[@id='1']")
objData.Text = "Testo del nodo aggiornato...... w minifloppy.it!"
set objData = nothing

objXML.Save(Server.MapPath("esempio.xml"))

'Pulizia
Set objXML = nothing
%>


In questo modo il contenuto del nodo listaprodotti/prodotto[@id='1'] verrà sovrascritto. Se volessimo soltanto aggiungere del testo al nodo selezionato, basterà modificare in questo modo il codice precedente:

<%
'...
objData.Text = objData.Text &"Testo del nodo aggiornato...... w minifloppy.it!"
'...
%>

Creazione di nuovi nodi e attributi

Partiamo anche questa volta dalla pratica:

<%
'Oggetto XML
Set objXML = Server.CreateObject("Msxml2.DOMDocument.4.0")

'Aggiungo il nodo
Set MyNode = objXML.createElement("prodotto")
MyNode.setAttribute "id", "3"
MyNode.setAttribute "nome", "Punkreas - Falso"
MyNode.Text = "Il miglior lavoro di uno dei migliori gruppi punk italiani"
objXML.documentElement.appendChild(MyNode)
set MyNode = nothing

objXML.Save(Server.MapPath("esempio.xml"))

'Pulizia
Set objXML = nothing
%>

Come potete osservare, dopo aver creato il nuovo elemento (objXML.createElement(”prodotto”)), gli assegnamo i due attributi id e nome tramite il metodo .setAttribute. Gli assegnamo del testo utilizzando la proprietà vista anche precedentemente, ovvero .Text. Infine procediamo all’aggiunta del nuovo nodo, posizionandolo in questo caso nel root, tramite objXML.documentElement.appendChild(MyNode).