Reading through an XML file

D

dec3

Hi

I was wondering you can provide me with some help. As a non programmer
I'm pleased I've managed to
cobble together some code which reads in an XML file but I'm struggling
to look
at anything other than the first record (of many. Here is an example of
the xml of
which there can be up to 10 records......

<records type="array">
<record>
<offer>
<value type="decimal">7.6</value>
<for type="decimal">1.16</for>
</offer>
<seller>
<Number type="integer">24</Number>
<is-valid type="boolean">false</is-valid>
<name>Smith</name>
<is-correct type="boolean">false</is-correct>
</seller>
</record>
<record>
<offer>
<value type="decimal">2.03</value>
<for type="decimal">1.163</for>
</offer>
<seller>
<Number type="integer">184</Number>
<is-valid type="boolean">false</is-valid>
<name>Jones</name>
<is-correct type="boolean">true</is-correct>
</seller>
</record>

What I want to do is to identify if the word, say, "Jones" appears in
any seller elements by reading through
the relevant records. It can appear in any or none of the "records".
Can anyone help?

Here is the relevant bits of my code (I hope!!!)

Dim oXML As Object
Dim oDom As Object
Dim strResponse As String
Dim strURL As String

On Error GoTo Handler
Set oXML = CreateObject("Microsoft.XMLHTTP")

With oXML
Open "GET", strURL, False
'Needed to web service will recognize get/post
setRequestHeader "Content-Type",
"application/x-www-form-urlencoded"
send
End With

'get the results
strResponse = oXML.responseText

Set oDom = CreateObject("MSXML.DOMDocument")
oDom.LoadXML (strResponse)

' Check to see if there is an entry
If oDom.DocumentElement.nodeName = "nil-classes" Then
' nothing there interesting
mydata = 0
Else
' This sections adds detail to the spreadsheet where there is an
existing sale offer and provide details
mydata =
oDom.DocumentElement.SelectSingleNode("record/offer/for").Text
' SOMEWHERE / SOMEHOW HERE I NEED TO LOOP THROUGH THE XML
RECORDS BUT I CAN ONLY READ THE FIRST!
END IF


Many thanks for your help!!!!

DEC
 
A

Adrian C


' This sections adds detail to the spreadsheet where there is an
existing sale offer and provide details
mydata =
oDom.DocumentElement.SelectSingleNode("record/offer/for").Text
' SOMEWHERE / SOMEHOW HERE I NEED TO LOOP THROUGH THE XML
RECORDS BUT I CAN ONLY READ THE FIRST!
END IF

You need the selectNodes method. That returns a NodesList which ye can
wander down using the .nextNode method once found how many in the list.

Set oNList = oNode.selectNodes("record/offer/for")

nTot = oNList.length - 1

For nCnt = 0 to nTot

Set oThisNode = oXMLTreeList.nextNode()

' do whatever here for each node

Next
 
A

Adrian C

Set oNList = oNode.selectNodes("record/offer/for")

nTot = oNList.length - 1

For nCnt = 0 to nTot

Set oThisNode = oXMLTreeList.nextNode()

' do whatever here for each node

Next

Whoops, bad cut n paste
 
D

dec3

Adrian said:
Whoops, bad cut n paste

Hi Adrian / Others

Sorry to continue to be thick on this but I now get msg "Objec
Required"

Here is my updated code...

Set oNList = oNode.SelectNodes("record/offer/for")

nTot = oNList.Length - 1

For nCnt = 0 To nTot

Set oThisNode = oNList.NextNode()

' do whatever here for each node

mytext
oDom.DocumentElement.SelectNodes("record/seller/name").Text

If mytext = "Jones" Then
' do stuff
End If
MsgBox (mytext)

Next

Any ideas please?
DE
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top