Code Comments
Programming Forum and web based access to our favorite programming groups.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
Post Follow-up to this messageErrata: > '------- 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.
Post Follow-up to this messageLook in the MSXML documents for setProperty "SelectionNamespaces". You'll th en be able to select nodes in a namespace. -- Joe (MVP - XML) [url]https://mvp.support.microsoft.com/profile=8AA9D5F5-E1C2-44C7-BCE8-8741D22D17A5[/ur l] "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 tw o > 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 o n, > but I know that If I paste the XML return into a new XML document, get ri d > 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 instructio n, > 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 > > > > > > > > >
Post Follow-up to this messagePowered by vBulletin
Copyright 2000-2006 Jelsoft Enterprises Limited.