Visualizza la versione completa : [VB]recupero di un nodo xml
ho un file xml cosi composto:
<famiglia>
<genitori>
<mamma>minni</mamma>
<babbo>topolino</babbo>
<figli>
<maschio font="3">tip</maschio>
<femmina>tap</femmina>
</figli>
</genitori>
</famiglia>
devo recuperare il valore del font di maschio in un programma di VB
Private Sub Form_Load()
Dim oxml As New MSXML2.DOMDocument30
oxml.loadXML ("c:\familia.xml")
End Sub
Come posso recuperare il valore "3" di questo file?
tnk
ciauzz
Per riuscirci devi innanzitutto caricare il documento col metodo load anzichè LoadXML (quest'ultimo richiede come parametro il conenuto del file e non il nome del file).
Poi con i metodi getElementsByTagName e getAttributes puoi ottenere quello che vuoi.
Ecco il codice di esempio:
Dim oxml As New MSXML2.DOMDocument30
'Lista di nodi
Dim ListaNodi As IXMLDOMNodeList
'Singolo elemento
Dim Elemento As IXMLDOMElement
'Carico il file e controllo eventuali errori
If oxml.Load("C:\familia.xml") Then
'Estraggo tutti i nodi di tipo "maschio"
Set ListaNodi = oxml.getElementsByTagName("maschio")
'Ciclo su tutti i nodi
For i = 0 To ListaNodi.length - 1
'Estraggo il singolo nodo (elemento)
Set Elemento = ListaNodi.Item(i)
'Visualizzo un messaggio con il valore dell'attributo font del nodo(elemento) attivo
MsgBox "font=" & Elemento.getAttribute("font")
Set Elemento = Nothing
Next i
Set ListaNodi = Nothing
Else
MsgBox oxml.parseError.errorCode & " " & oxml.parseError.reason & " " & oxml.parseError.Line & " " & oxml.parseError.linepos & " " & oxml.parseError.srcText
End If
Set oxml = Nothing
Spero tu riesca a risolvere il problema, fammi sapere...
Ciao!!
:gren:
E' ESATTAMENTE la soluzione che stavo cercando :p
Grazie 1000
Tamyka
Il nanerottolo :p
Ora devo fare l'inverso.
Cioe' devo inserire in una proprieta' un valore.
Ne caso precedente supponendo che il valore font fosse =""
come posso fare per inserire il valore 3?
ciuazz
Tamyka la scamorza affumicata :p
Per modificare un attributo usa il metodo setAttribute
Dim oxml As New MSXML2.DOMDocument30
'Lista di nodi
Dim ListaNodi As IXMLDOMNodeList
'Singolo elemento
Dim Elemento As IXMLDOMElement
'Carico il file e controllo eventuali errori
If oxml.Load("C:\familia.xml") Then
'Estraggo tutti i nodi di tipo "maschio"
Set ListaNodi = oxml.getElementsByTagName("maschio")
'Ciclo su tutti i nodi
For i = 0 To ListaNodi.length - 1
'Estraggo il singolo nodo (elemento)
Set Elemento = ListaNodi.Item(i)
'cambio il valore dell'attributo font
Elemento.setAttribute(Font, "3")
Set Elemento = Nothing
Next i
Set ListaNodi = Nothing
Else
MsgBox oxml.parseError.errorCode & " " & oxml.parseError.reason & " " & oxml.parseError.Line & " " & oxml.parseError.linepos & " " & oxml.parseError.srcText
End If
Set oxml = Nothing
Ciao!!:)