PDA

Visualizza la versione completa : [VB]recupero di un nodo xml


tamyka
13-05-2002, 11:07
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

Boldan
13-05-2002, 13:28
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:

tamyka
13-05-2002, 14:38
E' ESATTAMENTE la soluzione che stavo cercando :p

Grazie 1000

Tamyka
Il nanerottolo :p

tamyka
13-05-2002, 15:45
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

Boldan
13-05-2002, 16:31
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!!:)

tamyka
13-05-2002, 17:28
:tongue:

Loading