ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Reading through an XML file (https://www.excelbanter.com/excel-programming/438705-reading-through-xml-file.html)

dec3[_3_]

Reading through an XML file
 

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
<nameSmith</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
<nameJones</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


--
dec3
------------------------------------------------------------------------
dec3's Profile: 1398
View this thread: http://www.thecodecage.com/forumz/sh...d.php?t=172361

Microsoft Office Help


Adrian C[_2_]

Reading through an XML file
 
On 21/01/2010 23:14, dec3 wrote:
Hi


<snip

' 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

--
Adrian C

Adrian C[_2_]

Reading through an XML file
 
On 21/01/2010 23:36, Adrian C wrote:
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

Set oThisNode = oNList.nextNode()



--
Adrian C

dec3[_4_]

Reading through an XML file
 

Adrian C;620012 Wrote:
On 21/01/2010 23:36, Adrian C wrote:
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

Set oThisNode = oNList.nextNode()



--
Adrian C


Hi Adrian / Others

Sorry to continue to be thick on this but I now get msg "Object
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?
DEC


--
dec3
------------------------------------------------------------------------
dec3's Profile: 1398
View this thread: http://www.thecodecage.com/forumz/sh...d.php?t=172361

Microsoft Office Help



All times are GMT +1. The time now is 05:34 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com