[ kopca @ 25.06.2004. 12:57 ] @
Imam jednostavan XML fajl i treba mi vrednost (ili niz vrednosti) nekog cvora cije ime znam. MOlim za jednostavan primer neke f-je. Hvala... |
[ kopca @ 25.06.2004. 12:57 ] @
[ mladenovicz @ 25.06.2004. 13:57 ] @
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. Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|