%
'-----------------------------------------------------------------'
' 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
%>