XML Parsen

Status
Niet open voor verdere reacties.

Nickdude

Gebruiker
Lid geworden
2 dec 2004
Berichten
88
Geachte Heren/Dames,

Ik heb een xml file die er als volgt uit ziet:

Code:
<results>
     <response>
          <status>OK</status>
     </response>

     <product_1>
          <product_id>ID</product_id>
          <name>NAME</name>
     </product_1>

     <product_2>
          <product_id>ID</product_id>
          <name>NAME</name>
     </product_2>

</results>

Nu wil ik in VBA voor ieder product bepaalde gegevens in de database opslaan. Nu krijg ik het niet voor elkaar om de SELECTNODES functie werkend te krijgen.
Ik heb:

HTML:
Dim doc As MSXML2.DOMDocument
Dim nlist As MSXML2.IXMLDOMNodeList
Dim node As MSXML2.IXMLDOMNode

search = 'webadress....'
Set doc = New MSXML2.DOMDocument
doc.async = False
doc.setProperty "SelectionLanguage", "XPath"
doc.Load Search
Set nlist = doc.SelectNodes("//*[starts-with(name(),'product')]")
MsgBox "Matching Nodes : " & nlist.length

For Each node In nlist
'HIER KOMT DE CODE OM HET E.E.A. IN DE DATABASE TOE TE VOEGEN
Next

Het probleem zit dus blijkbaar in de regel:
Set nlist = doc.SelectNodes("//*[starts-with(name(),'product')]")
Want hieruit krijg ik nul resultaten....
 
ik denk dat je inderdaad nog even moet kijken naar je xpath expressie want ik denk niet dat dat starts-with gedeelte ook echt kan...
zo geeft //results bijvoorbeeld alles terug wat er in 'results' staat, vervang die hele regel (alles tussen aanhalingstekens) bijvoorbeeld maar eens door //results of lees dit nog eens door!
 
Laatst bewerkt:
Ik heb totaaaaal geen verstand van xml en parsen maar wilde toch even mijn idee erop los laten.
Als het klopt wat Example5 zegt en het niet op die manier mogelijk is, dan misschien een loop maken?
Zoiets als:

Code:
For i = 1 To 10 'of weet ik veel hoeveel... doc.Nodes.Count ??
Set nlist = nlist & doc.SelectNodes("//'product_" & i & "')]")
Next i
MsgBox "Matching Nodes : " & nlist.length
 
For Each node In nlist
'HIER KOMT DE CODE OM HET E.E.A. IN DE DATABASE TOE TE VOEGEN
Next


OF misschien in het XML een Hoofd Element maken die Product heet...
En dan Product_1, Product_2, Product_3 etc.. als child nodes?

Ik ben erg benieuwd en hoop er nog wat van op te steken!
Misschien zit ik heeeeeeelemaal verkeerd maar het idee is goed ;)

Gr,
dprod
 
Laatst bewerkt:
dprod

is niet nodig, je kunt namelijk bepaalde functies gebruiken waardoor je alles wat begint met bepaalde letters/woorden, gelezen wordt. ik heb er ook niet veel verstand van, maar mn eerste post was een vermoeden.
 
allemaal bedankt! Ik heb het anders opgelost:

For Each nde_response In xdoc.SelectNodes("/results/*")

en vervolgens:
If nde_response.nodeName = "response" Then
'niks
Else
'code
end if

Toch enorm bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan