Leggere/Scrivere File XML

 

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

 

'************************************************* 

 

_______________________________________________________________________

 

Pag: <<    <    >    >>