Home > Archive > ASP > June 2005 > XML DOM Methods question
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
XML DOM Methods question
|
|
|
| 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¶m2=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
| |
|
| 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.
| |
| Joe Fawcett 2005-06-04, 8:55 am |
| Look in the MSXML documents for setProperty "SelectionNamespaces". You'll then
be able to select nodes in a namespace.
--
Joe (MVP - XML)
https://mvp.support.microsoft.com/p...E8-8741D22D17A5
"joe" <nobody@nowhere.com> wrote in message
news:31mme.1950$yG4.72819@news20.bellglobal.com...
> 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¶m2=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
>
>
>
>
>
>
>
>
>
|
|
|
|
|