<% '-----------------------------------------------------------------' ' Name: custompollxml.asp ' ' Desc: XML parser that accesses remote URL from purplefinder.com ' ' and compiles an XML file to be used as HTML output for ' ' data ' Ver : 1.0 ' ' Author: Chris Larkham (c) 2008 ' ' Version history: ' ' 1.0 14/11/2006 - First release ' ' ' '-----------------------------------------------------------------' %> <% '--This will enable XMLHTTP and XMLDOM errors to be caught '-- we do not want the execption handler to fire. on error resume next '-- Retrive the raw XML data (RemoteXMLUrl in config.asp) '--versions might be slightly different, uncomment as applicable 'set XMLHTTP = Server.CreateObject("MSXML2.XMLHTTP") set XMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0") XMLHTTP.Open "GET", RemoteXMLUrl & "&time=" & now, false XMLHTTP.Send("") '--check that a critical XMLHTTP error has not occured (internal error) '-- respond with errorised XML if it has if err.number < 0 then Response.Write " " & vbcrlf Response.Write " Critical error accessing data - possibly bad XML data URL. Error No " & hex(err.number) & "" & vbcrlf Response.Write " " & vbcrlf err.clear else '--Check that if an internal error has not occured, if an external HTTP error has '--occured by verifiying the 200 OK status code. Respond with error XML if it has if not XMLHTTP.status = 200 then Response.Write " " & vbcrlf Response.Write " HTTP error " & XMLHTTP.status & " while accessing XML data." & vbcrlf Response.Write " " & vbcrlf else '--if all is well, parse the document using a XMLDOM object 'set XMLDOMContent = Server.CreateObject("Microsoft.XMLDOM") set XMLDOMContent = Server.CreateObject("MSXML2.DOMDocument.6.0") XMLDOMContent.ValidateOnParse = false XMLDOMContent.SetProperty "ProhibitDTD", false XMLDOMContent.Async = false XMLDOMContent.Load(XMLHTTP.ResponseXML) '--check that the XMLDOM object has not had a critical error '-- send XML error if it has. if XMLDOMContent.parseError.errorCode < 0 then Response.Write " " & vbcrlf Response.Write " XMLDOM error " & hex(XMLDOMContent.parseError.errorCode) & " (" & XMLDOMContent.parseError.Reason & ") - Line " & XMLDOMContent.parseError.Line & " char " & XMLDOMContent.parseError.Linepos & "" & vbcrlf Response.Write " " & vbcrlf else '--for each asset key, extract the required keys set assets = XMLDOMContent.selectNodes("//asset") for each asset in assets set nodeObject = asset.selectSingleNode("asset-identifier/value") vesselId = nodeObject.text 'set nodeObject = asset.selectSingleNode("asset-identifier/option/description") set nodeObject = asset.selectSingleNode("asset-name/value") vesselName = nodeObject.text set nodeObject = asset.selectSingleNode("latitude/degrees-of-value") vesselLatDegs = nodeObject.text set nodeObject = asset.selectSingleNode("latitude/minutes-of-value") vesselLatMins = nodeObject.text set nodeObject = asset.selectSingleNode("latitude/seconds-of-value") vesselLatSecs = nodeObject.text set nodeObject = asset.selectSingleNode("latitude/hemisphere-of-value") vesselLathemisphere = nodeObject.text set nodeObject = asset.selectSingleNode("longitude/degrees-of-value") vesselLongDegs = nodeObject.text set nodeObject = asset.selectSingleNode("longitude/minutes-of-value") vesselLongMins = nodeObject.text set nodeObject = asset.selectSingleNode("longitude/seconds-of-value") vesselLongSecs = nodeObject.text set nodeObject = asset.selectSingleNode("longitude/hemisphere-of-value") vesselLongHemisphere = nodeObject.text set nodeObject = asset.selectSingleNode("speed/value-of-value") vesselSpeed = nodeObject.text set nodeObject = asset.selectSingleNode("heading/value-of-value") vesselHeading = nodeObject.text set nodeObject = asset.selectSingleNode("trail-date-time/date-of-value") vesselFixDate = nodeObject.text set nodeObject = asset.selectSingleNode("trail-date-time/time-of-value") vesselFixTime = nodeObject.text vesselFixDateTime = vesselFixDate & " " & vesselFixTime '--check that the vessel is to be rendered renderVessel = false for each renderVesselId in vesselIds if "vessel." & renderVesselId = vesselId then renderVessel = true next '--write out the HTML output '--EDIT THE HTML AFTER THIS TAG %>
LAT<%=vesselLatDegs%>° <%=vesselLatMins%>' <%=vesselLatSecs%>" <%=vesselLathemisphere%>
LONG<%=vesselLongDegs%>° <%=vesselLongMins%>' <%=vesselLongSecs%>" <%=vesselLongHemisphere%>
SPEED<%=vesselSpeed%> knots
POLLED<%=vesselFixDateTime%>
<% '--EDIT THE HTML BEFORE THE ABOVE TAG next end if end if end if '--Finish up %>