I've been trying to learn about this as well. This stock quote service was working up until a few days ago then it broke:
http://www.webservicex.net/stockquote.asmx?op=GetQuoteNow it's erroring with a disk full error of some sort.
Instead I've been working with getting weather by zip code. Don't know if this will work in Canada?
http://wsf.cdyne.com/WeatherWS/Weather.asmxHere's some code. Type a zip code into an edit field it will get the weather, parse the xml, and post the result to a list box.
dim vXML, answerString, newRow as string
dim hsock as new HTTPSocket
txtTextOutput.Visible=false
lbXMLOutput.Visible=true
vXML = "<?xml version=""1.0"" encoding=""utf-16""?>"
vXML = vXML + "<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">"
vXML = vXML + "<soap:Body>"
vXML = vXML + "<ns1:GetCityWeatherByZIP xmlns:ns1=""http://ws.cdyne.com/WeatherWS/"">"
vXML = vXML + "<ns1:ZIP>"+edfTextEntry.Text+"</ns1:ZIP>"
vXML = vXML + "</ns1:GetCityWeatherByZIP>"
vXML = vXML + "</soap:Body>"
vXML = vXML + "</soap:Envelope>"
// HTTPSocket version
hsock = new HTTPSocket
hsock.yield = false
hsock.SetRequestContent vXML, "text/xml"
answerString=hsock.post("http://wsf.cdyne.com/WeatherWS/Weather.asmx", 10)
Dim x As New XmlDocument(answerString)
// check first node of document:
Dim n As XmlNode = x.FirstChild
// and now walk over all sub nodes, just the data sub nodes which are deep
Dim childNode As XmlNode = n.FirstChild.FirstChild.FirstChild.FirstChild 'data is 4 nodes deep
lbXMLOutput.DeleteAllRows
While childNode <> Nil
If childNode.PreviousSibling <> Nil and childNode.PreviousSibling.Name="Pressure" then
exit
else
newRow = childNode.Name + ": " + childNode.FirstChild.Value
lbXMLOutput.addrow(newRow)
childNode = childNode.NextSibling
end if
Wend