MartyConnelly
martyconnelly at shaw.ca
Tue Dec 23 14:00:17 CST 2003
You want the attribute value CURRENCY not the element PRICE so //RealData/ITEM/PRICE[@CURRENCY="EUR"] There are some testing programs that might help with this like XMLSPY 30 day trial or this free one, a little difficult for there is no help and blows up if xml invalid Also XML file must be saved as UTF-8 or Unicode not text. Text blows away the BOM marker. http://www.develop.com/uk/technology/resourcedetail.aspx?id=a5b18ce9-0972-413d-ae10-795f9aebcebf Hmm I just noticed another possible XPath problem because of "," in currency sum(//RealData/ITEM/PRICE) gives you NaN but count(//RealData/ITEM/PRICE) is okay Also see this for error checking Client side validation of xml. Just translate the vbs to vba http://www.15seconds.com/issue/020606.htm Erwin Craps - IT Helps wrote: >Ok I'm getting close now. > >Only two, probably small issues for you. >This is the XML result I get > > <?xml version="1.0" ?> >- <RealData> > <MSG ID="0">ok</MSG> >- <ITEM> > <ID>783662</ID> > <DESC>LCD 1501-BK 15" TFT 0.297mm 60kHz 1024 x 768 TCO99 Black</DESC> > <PRICE CURRENCY="EUR">266,71</PRICE> > <QTY>0</QTY> > <DELDATE>07012004</DELDATE> > </ITEM> > </RealData> > > > >Q1: How do I retrieve the MSG ID value (0 in this case) and text (ok in >this case)? > >Q2: How do I retrieve the CURRENCY value (EUR in this case). >.responseXML.SelectSingleNode("//ITEM/PRICE").Text >Results in the price but >.responseXML.SelectSingleNode("//ITEM/PRICE CURRENCY").Text >Or >.responseXML.SelectSingleNode("//ITEM/CURRENCY").Text >Don't work. > >Thx Erwin > > > >-----Original Message----- >From: accessd-bounces at databaseadvisors.com >[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of MartyConnelly >Sent: Tuesday, December 23, 2003 12:25 AM >To: Access Developers discussion and problem solving >Subject: Re: [AccessD] XML Http request from Access 2K2 or 2K3 > >What I was doing was reading the xml file directly into the xmldom >parser, then selecting the nodes from the dom that I was interested in >via an xpath statement > >like "//item/*". There are a couple of ways of doing this; one other is >to use an xslt transform. > >You might want to try Severxmlhttp, it is newer, uses a different stack >and might be faster. >Dim xmlServerHttp As New Msxml2.ServerXMLHTTP40 Dim oNodeList As >IXMLDOMNodeList Dim onewsElement As IXMLDOMElement xmlServerHttp.open >"GET", "http://localhost/sample.xml", False xmlServerHttp.send ' also >need to check xmlserverhttp.parseerror MsgBox xmlServerHttp.Status, >xmlServerHttp.Statustext '200 is OK MsgBox xmlServerHttp.responseXML.xml >onewsElement = srvXmlHttp.responseXML.selectSingleNode("//news/story1") > > > >Erwin Craps - IT Helps wrote: > > > >>Marty >> >>Your code is not exactly the solution for the problem I was confronted >>with, but you pointed me in the right direction. >>Is your code a, so called, XML parser? >>To convert the raw data into useable fields/values? >> >>Below code is what I created thanks to you (slow but it works). >> >>Dim objSrvHTTP As ServerXMLHTTP >>Set objSrvHTTP = New ServerXMLHTTP50 >>With objSrvHTTP >> .Open "GET", >>"http://www.dummywebsite.com/xml/xmlonl.asp?custid=DummyCustID&prodid=7 >>8 >>3662", False >> .Send >> Debug.Print .responseXML.XML >>End With >>Set objSrvHTTP = Nothing >> >>Great stuff XML.... >>Pretty easyer than analysing a returned HTML page (been there, done >>that) >> >>Erwin >> >> >>-----Original Message----- >>From: accessd-bounces at databaseadvisors.com >>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Erwin Craps >>- IT Helps >>Sent: Monday, December 22, 2003 9:07 PM >>To: Access Developers discussion and problem solving >>Subject: RE: [AccessD] XML Http request from Access 2K2 or 2K3 >> >>OK thx, I'll try to implement this. >> >>-----Original Message----- >>From: accessd-bounces at databaseadvisors.com >>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of >>MartyConnelly >>Sent: Monday, December 22, 2003 8:46 PM >>To: Access Developers discussion and problem solving >>Subject: Re: [AccessD] XML Http request from Access 2K2 or 2K3 >> >>Here is how I grab an xml RSS news feed file from Microsoft and stick >>xml elements into a table It is a little lite on error handling and >>needs reference to XML 4.0, I run from Access97. >>If your files are large above a couple of megabytes, you may have to >>use the SAX parser. >> >>'LoadXMLJP "http://msdn.microsoft.com/vbasic/rss.xml","vbasic" >>'LoadXML "http://msdn.microsoft.com/rss.xml","Just Published" >>'LoadXML "http://msdn.microsoft.com/webservices/rss.xml","Web Services" >>'LoadXML "http://msdn.microsoft.com/vstudio/rss.xml","Visual Studio" >>'LoadXML "http://msdn.microsoft.com/netframework/rss.xml","Net >>Framework" >>'LoadXML "http://msdn.microsoft.com/vcsharp/rss.xml","VC Sharp" >>'LoadXML "http://msdn.microsoft.com/visualc/rss.xml", "VisualC" >>'LoadXML "http://msdn.microsoft.com/security/rss.xml", "Security" >>Public Sub LoadXMLJP(ByRef AdviserXML As String, strFeed As String) >> >> ' On Error GoTo ErrorHandler >> >> Const ACTION_NAME As String = "LoadXML" >> >> Dim oDOMDocument As MSXML2.DOMDocument40 >> Dim oNodeList As IXMLDOMNodeList >> Dim oAdviserDetailsNode As IXMLDOMNode >> Dim oLowestLevelNode As IXMLDOMElement >> Dim objXMLDOMNamedNodeMap As IXMLDOMNamedNodeMap >> >> Dim sTempValue As String >> Dim msFPTAdviserID As Object >> 'temporary database >>Dim MyDb As Database >>Dim MyRs As Recordset >>Dim irec As Long >>Dim strTitleLink As String >> >> Set oDOMDocument = New MSXML2.DOMDocument40 >> >> oDOMDocument.async = False >> oDOMDocument.validateOnParse = False 'assumes previous check for >>xml validity >> oDOMDocument.resolveExternals = False >> oDOMDocument.preserveWhiteSpace = True >> >> If Not oDOMDocument.Load(AdviserXML) Then >> MsgBox Err.number & Err.Description >> >> 'Call Err.Raise(ERR_UNABLE_TO_LOAD_ADVISER_XML, , >>ERRDESC_UNABLE_TO_LOAD_ADVISER_XML) >> Exit Sub >> End If >> Debug.Print "grabbed box" >> Set oAdviserDetailsNode = oDOMDocument.documentElement >> >> Set objXMLDOMNamedNodeMap = oAdviserDetailsNode.Attributes >> >> 'msFPTAdviserID = >>objXMLDOMNamedNodeMap.getNamedItem("title").nodeValue >> Debug.Print "Set" >> Debug.Print "msFPT" >> Set oNodeList = oAdviserDetailsNode.selectNodes("//item/*") >>Set MyDb = CurrentDb >>Set MyRs = MyDb.OpenRecordset("RSSFeed") irec = 0 MyRs.AddNew >> For Each oLowestLevelNode In oNodeList >> >> sTempValue = oLowestLevelNode.Text >> ' Debug.Print oLowestLevelNode.nodeName & "-" & vbCrLf & >>oLowestLevelNode.Text >> >> Select Case oLowestLevelNode.nodeName >> Case "title" >> >> Debug.Print sTempValue >> MyRs!Title = sTempValue >> strTitleLink = sTempValue >> Case "PubDate" >> Debug.Print sTempValue >> MyRs!PubDate = sTempValue >> Case "description" >> Debug.Print sTempValue >> MyRs!fdescription = sTempValue >> Case "link" >> Debug.Print sTempValue >> 'MyRs!link = sTempValue >> 'need # format for clickable link >> MyRs!link = sTempValue & "#" & sTempValue & "#" >> End Select >> irec = irec + 1 >> If irec = 4 Then >> 'check if duplicate also check if quote " in string >> Debug.Print DLookup("ID", "RSSFeed", "Title=" & Chr(34) & >>strTitleLink & Chr(34)) >> If IsNull(DLookup("Title", "RSSFeed", "Title=" & Chr(34) & >>strTitleLink & Chr(34))) Then >> MyRs!feed = strFeed >> MyRs.Update >> >> End If >> MyRs.AddNew >> irec = 0 >> End If >> >> Next >> Set MyRs = Nothing >> Set MyDb = Nothing >> Set oDOMDocument = Nothing >> Set oAdviserDetailsNode = Nothing >> Set objXMLDOMNamedNodeMap = Nothing >> Exit Sub >> >>ErrorHandler: >> >>' Call NewError.Raise(Err.Number, Err.Source, Err.Description, >>'MODULE_NAME, ACTION_NAME, Erl) >> >>End Sub >> >> >> >>Erwin Craps - IT Helps wrote: >> >> >> >> >> >>>Euh, I don't think so... >>>I explain more detailed. >>> >>>My supplier allows me to constuct a url which returns a XML file in a >>>browser. >>> >>>For example >>>http://www.websitedummy.com/xml/xmlonl.asp?custid=MyCustID&prodid=7836 >>>6 >>>2 (Real Example but I replaced the website and cust id for obvious >>>reasons) >>> >>>As a (real) result I get an XML file looking like this in my browser. >>><?xml version="1.0" ?> >>>- <RealData> >>><MSG ID="0">ok</MSG> >>>- <ITEM> >>><ID>783662</ID> >>><DESC>LCD 1501-BK 15" TFT 0.297mm 60kHz 1024 x 768 TCO99 Black</DESC> >>> >>> > > > >>><PRICE CURRENCY="EUR">266,71</PRICE> <QTY>0</QTY> >>><DELDATE>07012004</DELDATE> </ITEM> </RealData> >>> >>> >>>I want to know if I can do this straight away from Access 2K2 or 2K3, >>>knowing that Access suports XML. >>>Isn't this what XML is all about? >>>Connecting anything to anything??? >>> >>>Or am I to positive thinking? >>> >>>Well, I could resolve this with my http Active-X control I have, but I >>> >>> > > > >>>always prefere to use native Access functionality above purchased >>>controls. >>> >>>The reason why I wanna do this is to startup my E-commerce website >>>next >>> >>> >>> >>> >> >> >> >> >>>year. >>>I want to be able to update my article database automaticaly with >>>stock >>> >>> >>> >>> >> >> >> >> >>>and purchase information, etc... >>>This database is used for my internal application and both E-commerce >>>website. >>> >>> >>> >>>Erwin >>> >>> >>> >>> >>>-----Original Message----- >>>From: accessd-bounces at databaseadvisors.com >>>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Charlotte >>>Foust >>>Sent: Monday, December 22, 2003 4:54 PM >>>To: Access Developers discussion and problem solving >>>Subject: RE: [AccessD] XML Http request from Access 2K2 or 2K3 >>> >>>You can open a recordset on an xml file, if that's what you're looking >>> >>> > > > >>>for. >>> >>>Charlotte Foust >>> >>>-----Original Message----- >>>From: Erwin Craps - IT Helps [mailto:Erwin.Craps at ithelps.be] >>>Sent: Monday, December 22, 2003 1:47 AM >>>To: Access Developers discussion and problem solving >>>Subject: [AccessD] XML Http request from Access 2K2 or 2K3 >>> >>> >>>I never looked in to the XML support for Access. >>>Apparantly there is XML support, but the only thing I find is a >>>import/export filter. >>> >>>So I'm wundering if I can do a specific http xml request straight from >>> >>> > > > >>>a form, in an easy way? >>> >>> >>> >>>Erwin Craps >>> >>>Zaakvoerder >>> >>>www.ithelps.be/jonathan >>> >>> >>> >>>This E-mail is confidential, may be legally privileged, and is for the >>> >>> > > > >>>intended recipient only. Access, disclosure, copying, distribution, or >>> >>> > > > >>>reliance on any of it by anyone else is prohibited and may be a >>>criminal offence. Please delete if obtained in error and E-mail >>>confirmation to the sender. >>> >>>IT Helps - I.T. Help Center *** Box Office Belgium & Luxembourg >>> >>>www.ithelps.be <http://www.ithelps.be/> * www.boxoffice.be >>><http://www.boxoffice.be/> * www.stadleuven.be >>><http://www.stadleuven.be/> >>> >>>IT Helps bvba* ** Mercatorpad 3 ** 3000 Leuven >>> >>>IT Helps * Phone: +32 16 296 404 * Fax: +32 16 296 405 E-mail: >>>Info at ithelps.be >>> >>>Box Office ** Fax: +32 16 296 406 ** Box Office E-mail: >>>Staff at boxoffice.be <mailto:figures at boxoffice.be> >>> >>> >>>_______________________________________________ >>>AccessD mailing list >>>AccessD at databaseadvisors.com >>>http://databaseadvisors.com/mailman/listinfo/accessd >>>Website: http://www.databaseadvisors.com >>>_______________________________________________ >>>AccessD mailing list >>>AccessD at databaseadvisors.com >>>http://databaseadvisors.com/mailman/listinfo/accessd >>>Website: http://www.databaseadvisors.com >>>_______________________________________________ >>>AccessD mailing list >>>AccessD at databaseadvisors.com >>>http://databaseadvisors.com/mailman/listinfo/accessd >>>Website: http://www.databaseadvisors.com >>> >>> >>> >>> >>> >>> >>> >>-- >>Marty Connelly >>Victoria, B.C. >>Canada >> >> >> >>_______________________________________________ >>AccessD mailing list >>AccessD at databaseadvisors.com >>http://databaseadvisors.com/mailman/listinfo/accessd >>Website: http://www.databaseadvisors.com >>_______________________________________________ >>AccessD mailing list >>AccessD at databaseadvisors.com >>http://databaseadvisors.com/mailman/listinfo/accessd >>Website: http://www.databaseadvisors.com >>_______________________________________________ >>AccessD mailing list >>AccessD at databaseadvisors.com >>http://databaseadvisors.com/mailman/listinfo/accessd >>Website: http://www.databaseadvisors.com >> >> >> >> >> > >-- >Marty Connelly >Victoria, B.C. >Canada > > > >_______________________________________________ >AccessD mailing list >AccessD at databaseadvisors.com >http://databaseadvisors.com/mailman/listinfo/accessd >Website: http://www.databaseadvisors.com >_______________________________________________ >AccessD mailing list >AccessD at databaseadvisors.com >http://databaseadvisors.com/mailman/listinfo/accessd >Website: http://www.databaseadvisors.com > > > -- Marty Connelly Victoria, B.C. Canada