Za ovo ti treba referenca na MSXML 4.0
Ako XML izgleda ovako nekako
Code:
<Settings>
<Sekcija Ime="Folderi">
<Parametar Ime="DefaultFolder" Vrednost="..\"/>
<Parametar Ime="RootFolder" Vrednost="E:\"/>
</Sekcija>
<Sekcija Ime="General">
<Parametar Ime="RefreshRate" Vrednost="1000"/>
</Sekcija>
</Settings>
onda ovaj kod radi:
Code:
Option Explicit
Private Const mcstrSekcije = "//Settings/Sekcija"
Private Const mcstrFileName = "E:\test.xml"
Private Function CitajVrednost(Sekcija As String, Parametar As String) As String
Dim xmlDoc As MSXML2.DOMDocument40
Dim xmlSekcijaNd As MSXML2.IXMLDOMNode
Dim xmlParamNd As MSXML2.IXMLDOMNode
Dim xmlAttNd As MSXML2.IXMLDOMAttribute
Set xmlDoc = New MSXML2.DOMDocument40
If xmlDoc.Load(mcstrFileName) Then
Set xmlSekcijaNd = xmlDoc.selectSingleNode(mcstrSekcije & "[@Ime=""" & Sekcija & """]")
If Not xmlSekcijaNd Is Nothing Then
Set xmlParamNd = xmlSekcijaNd.selectSingleNode("Parametar[@Ime=""" & Parametar & """]")
If Not xmlParamNd Is Nothing Then
Set xmlAttNd = GetAttributeNode(xmlParamNd, "Vrednost")
If Not xmlAttNd Is Nothing Then
CitajVrednost = xmlAttNd.Value
Else
MsgBox "can not find attribute"
End If
Else
MsgBox "can not find param"
End If
Else
MsgBox "can not find section"
End If
Else
MsgBox "can not load xml ..."
End If
End Function
Private Function GetAttributeNode(vxmlElement As MSXML2.IXMLDOMNode, vstrAttributeName As String) _
As MSXML2.IXMLDOMAttribute
On Error Resume Next
Dim xmlElem As MSXML2.IXMLDOMElement
Dim xmlDoc As MSXML2.DOMDocument40
If vxmlElement Is Nothing Then Exit Function
Select Case vxmlElement.nodeType
Case NODE_ATTRIBUTE
Set GetAttributeNode = vxmlElement
Case NODE_ELEMENT
Set xmlElem = vxmlElement
Set GetAttributeNode = xmlElem.GetAttributeNode(vstrAttributeName)
Case NODE_DOCUMENT
Set xmlDoc = xmlElem
Set GetAttributeNode = xmlDoc.Attributes(vstrAttributeName)
End Select
End Function
Private Sub cmdReadXML_Click()
Debug.Print "Folderi", "RootFolder", CitajVrednost("Folderi", "RootFolder")
Debug.Print "Folderi", "DefaultFolder", CitajVrednost("Folderi", "DefaultFolder")
Debug.Print "General", "RefreshRate", CitajVrednost("General", "RefreshRate")
End Sub
Poenta je napraviti sto vise funkcija kao sto je ova GetAttributeNode. Znaci GetNode, GetNodeList, GetAttributeValue, ..., to spakovati u modul i onda je lako raditi sa bilo kojom strukturom XML fajla. Imas na MS sajtu dosta sampleova koji sadrze ovakve funkcije.
Mislim da bi neko od "ovlascenih lica" trebao da prebaci ovo u VB&ASP forum, ili bar do cekaonice.