webForumDet fria alternativet

VB + XML listning

8 svar · 348 visningar · startad av ironhead

ironheadMedlem sedan mars 20011 346 inlägg
#1

Har en XML-fil som ser ut såhär:

filelist.xml:

----------------------------------------------------------
<xml xmlns:o="urn:schemas-microsoft-com:office:office">
<o:MainFile HRef="../chapter_1.html"/>
<o:File HRef="header.htm"/>
<o:File HRef="image001.png"/>
<o:File HRef="filelist.xml"/>
</xml>
----------------------------------------------------------

...och en vb-kod som ser ut såhär:

Dim xDoc As MSXML.DOMDocument
Set xDoc = New MSXML.DOMDocument

Dim objLst As Object

If xDoc.Load("d:\file.xml") Then

Set objLst = xDoc.getElementsByTagName("o:File")

For i = 0 To objLst.length - 1

'Här vill jag lista elementen

 Next

...men jag vet inte hur jag visar värdet på objLst i for-satsen...hur skriver man?

nikoMedlem sedan juni 20022 599 inlägg
#2
Dim xDoc As MSXML2.DOMDocument
Set xDoc = New MSXML2.DOMDocument
Dim objLst As MSXML2.IXMLDOMNodeList
xDoc.async = False
xDoc.Load ("d:\filelist.xml")
If xDoc.parseError.errorCode = 0 Then
    Set objLst = xDoc.getElementsByTagName("o:File")
    For i = 0 To objLst.length - 1
        MsgBox objLst.Item(i).Attributes.getNamedItem("HRef").nodeValue
        'Här vill jag lista elementen
    Next
Else
    MsgBox xDoc.parseError.reason
End If
ironheadMedlem sedan mars 20011 346 inlägg
#3

Tackar! Funkade ju kanon! :)

ironheadMedlem sedan mars 20011 346 inlägg
#4

felpostning!

ironheadMedlem sedan mars 20011 346 inlägg
#5

Nu har jag en ny XML-fil som ser ut såhär:

<?xml version="1.0" encoding="iso-8859-1"?>
<export>
<databas name="databas1">
<tabell name="paket">
<fields>
<socker>blah1</socker>
<grädde>blah</grädde>
<mjölk>blah3</mjölk>
<mjöl>blah4</mjöl>
<vaniljsocker>blah5</vaniljsocker>
</fields>
</tabell>
<tabell name="paket2">
<fields>
<skinka>blah1<skinka>
<lök>blah2<lök>
<margarin>blah3<margarin>
<cocos>blah4<cocos>
<farinsocker>blah5<farinsocker>
</fields>
</tabell>
</databas>
</export>

Kan man använda en liknande metod för att läsa av värdena och lägga in dessa till en SQL-server genom VB?!

nikoMedlem sedan juni 20022 599 inlägg
#6

Ja? Självklart kan man nysta ut data ur vilket XML-dokument som helst med de metoder som finns i MSXML. Hur koden sen ser ut blir ju en funktion av vad man mer exakt vill göra.

ironheadMedlem sedan mars 20011 346 inlägg
#7

Använde detta för att få ut värdena i subelementen:

Set objLst = xDoc.getElementsByTagName("tabell")

For i = 0 To objLst.length - 1
MsgBox objLst.Item(i).selectSingleNode("fields").Text
Next

...men vad använder jag för att få ut själva sub-elementet?
nu har jag värdet för fältet, men vill ju ha ut fältnamnet oxå....

nikoMedlem sedan juni 20022 599 inlägg
#8

Easier than you think:

    Set objLst = xDoc.getElementsByTagName("tabell")
    Dim myNode As MSXML2.IXMLDOMNode
    For i = 0 To objLst.length - 1
         MsgBox "Tabell: " & objLst.Item(i).Attributes.getNamedItem("name").nodeValue
        For Each myNode In objLst.Item(i).selectSingleNode("fields").childNodes
            MsgBox "Namn: " & myNode.nodeName & ", Värde: " & myNode.Text
        Next
    Next
ironheadMedlem sedan mars 20011 346 inlägg
#9

Absolut lysande! :birp
Tackar!

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)