XML DOM Methods question

J

joe

Hello: I'd really appreciate some feedback, bacause I've been stuck for two
days with this. I am trying to parse XML returns from a certain website,
sent back in response to my URL queries. The root node of the returned XML
has a namespace instruction that I cannot get rid of. Why do I want to do
that, you may ask? Well, I' m really a newbie with XML/XLST/XPath and so on,
but I know that If I paste the XML return into a new XML document, get rid
of the namespace stuff, and use that page instead of the original XML
return, my code works! Below is a sample of my code so far.

'------- being code------------
Dim objXMLDoc, strURL, bLoadResult, objNodeList, x

strURL = http://somesite/xmlreturn?param1=etc&param2=etc

Set objXMLDoc = Server.CreateObject("MSXML2.DOMDocument.4.0")

objXMLDoc.async = False
objXMLDoc.validateOnParse = False
objXMLDoc.resolveExternals = False

Dim bLoadResult

bLoadResult = objXMLDoc.load(strURL)

If bLoadResult Then

'-- 1 (for additional command explained below)
'-- 2 (for additional command explained below)

Set objNodeList = objXMLDoc.selectNodes("/RootNode/SubNode1")

Response.Write (objNodeList.length&"</br>")

For Each x in objNodeList

With Response
.Write x.selectSingleNode("SubNode2").nodeTypedValue
.Write "</br>"
End With

Next

Else

..... error message here ....

End if
'------- end code------------

As it is above, I can list the items in the copy-pasted XML file mentioned
above (with namespace command deleted). However, with the original XML,
objNodeList.length is 0. I thought I'd have to polish my Xpath instruction,
so I added the following line where the number 1 is commented above:
'-- 1
objXMLDoc.setProperty "SelectionLanguage", "XPath"

I also tried to get rid of the namespace instruction like below, inserting
that
where the number 2 is commented above:

'-- 2
objXMLDoc.setProperty "SelectionNamespaces", "xmlns=''"

I also tried:

objXMLDoc.setProperty "SelectionNamespaces", empty

Well, that's it for my code. Is there any way around this namespace thing,
or does that mean that I must have some XSL
file somewhere that transforms the returned XML? As I said, I don't know
much about all this, and any help is appreciated. Thanks in advance
 
J

joe

Errata:
'------- being code------------
Dim objXMLDoc, strURL, bLoadResult, objNodeList, x
[snipped]
Dim bLoadResult

By mistake I defined bLoadResult in my example. In the code I use this is
fixed.
 
J

Joe Fawcett

Look in the MSXML documents for setProperty "SelectionNamespaces". You'll then
be able to select nodes in a namespace.
 

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

Members online

Forum statistics

Threads
473,744
Messages
2,569,479
Members
44,900
Latest member
Nell636132

Latest Threads

Top