Il formato XML è molto diffuso e viene spesso utilizzato per lo scambio di informazioni tra applicazioni o come file di configurazione in cui sono inserite informazioni su come devono essere create pagine/tabelle o altro.
E' quindi molto utile sapere come gestire questi file, come Leggerli e Scriverli; vediamo come.
I file XML sono composti da dati raggruppati per tipo secondo una gerarchia. Prendiamo ad esempio un file strutturato in questa maniera:
<?xml version="1.0"?>
<Root>
<ElencoElementi>
<Elemento>
<IDElemento>
<string>"1"</string>
</IDElemento>
<ValoreElemento>
<string>"Libro"</string>
</ValoreElemento>
</Elemento>
</ElencoElementi>
</Root>
Supponiamo di voler scrivere un ulteriore Elemento il cui ID sarà "2" ed il Valore sarà "Penna". Supponiamo anche che il file si chiami element.xml e si trovi sotto c:\temp. Scriveremo questo codice
'************************************************
'***************** M A I N ************************
'************************************************
Dim objXMLDoc, oRootElement, oNodeElencoElementi, oNodeElemento
Dim oNodeElementoId, oNodeElementoVal, oNodeStrId, oNodeStrVal
Const myVar = "c:\temp\myVar.xml"
Const ID_DaAggiungere = "2"
Const ValoreDaAssociare = "Penna"
'MS XML DOM
set objXMLDoc=CreateObject("Microsoft.XMLDOM")
objXMLDoc.async="false"
'caricamento file xml ---> myVar
objXMLDoc.load(myVar)
'the root element of the xml tree
set oRootElement = objXMLDoc.documentElement
'mi setto il primo elemento dopo root che rappresenta <ElencoElementi>
'sotto il quale devo inserire <Elemento>
set oNodeElencoElementi = oRootElement.ChildNodes.Item(0)
set oNodeElemento = objXMLDoc.createNode(1,"Elemento","")
oNodeElencoElementi.appendChild oNodeElemento
set oNodeElementoId = objXMLDoc.createNode(1,"IDElemento","")
oNodeElemento.appendChild oNodeElementoId
set oNodeStrId = objXMLDoc.createNode(1,"string","")
oNodeStrId.Text = ID_DaAggiungere
oNodeElementoId.appendChild oNodeStrId
set oNodeElementoVal = objXMLDoc.createNode(1,"ValoreElemento","")
oNodeElemento.appendChild oNodeElementoVal
set oNodeStrVal = objXMLDoc.createNode(1,"string","")
oNodeStrVal.Text = ValoreDaAssociare
oNodeElementoVal.appendChild oNodeStrVal
objXMLDoc.Save(myVar)
set oNodeStrVal = Nothing
set oNOdeStrId = Nothing
set oNodeElementoVal = Nothing
set oNodeElementoId = Nothing
set oNodeElemento = Nothing
set oNodeElencoElementi = Nothing
set oRootElement = Nothing
Set objXMLDoc = Nothing
'************************************************
Il risultato sarà questo:
Vediamo ora come leggere da un file XML. Supponiamo di voler leggere dal file precedente il valore di tutti gli "IDElemento" del file.
Per far questo è possibile utilizzare il metodo getElementsByTagName dell'oggetto oRootElement. Faremo quindi un ciclo per tutto il oRootElement.ChildNodes andando a visualizzare il valore di IDElemento
'*************************************************
'********************* M A I N ********************
'*************************************************
Dim objXMLDoc, oRootElement, oNodeElementoId, i
Const myVar = "c:\temp\myVar.xml"
'MS XML DOM
set objXMLDoc=CreateObject("Microsoft.XMLDOM")
objXMLDoc.async="false"
'caricamento file xml ---> myVar
objXMLDoc.load(myVar)
'the root element of the xml tree
set oRootElement = objXMLDoc.documentElement
set oNodeElementoID = oRootElement.getElementsByTagName("IDElemento")
for i = 0 to oRootElement.childNodes.Length
msgbox oNodeElementoID(i).childNodes(0).Text
next
set oNodeElementoID = Nothing
set oRootElement = Nothing
'*************************************************
_______________________________________________________________________