By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,639 Members | 1,326 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,639 IT Pros & Developers. It's quick & easy.

"Object is not set to a reference" error message using accuweather lib

P: 14
well, now that i've finaly got the accuweather lib working it says "Object is not set to a reference" at "xel.Element("weathertext").Value"

Expand|Select|Wrap|Line Numbers
  1. Imports System.Net
  2. Imports System.IO
  3. Imports System.Xml
  4. Imports System.Text
  5.  
  6. Public Class WeatherClient
  7. #Region "Enums"
  8.     Enum Language
  9.         Dutch
  10.         English
  11.     End Enum
  12.     Enum TemperatureScale
  13.         Celcius
  14.         Fahrenheit
  15.     End Enum
  16. #End Region
  17. #Region "Constructor"
  18.     Dim tmpscale As TemperatureScale
  19.     Dim lang As Language
  20.  
  21.     Public Sub New(ByVal cityname As String, ByVal language As Language, tempscale As TemperatureScale)
  22.         locat = cityname
  23.         lang = language
  24.         tmpscale = tempscale
  25.         getconditions()
  26.     End Sub
  27. #End Region
  28. #Region "Inner classes"
  29.     Public Class CurrentConditions
  30.  
  31.         Dim cond As String
  32.         Dim tmp As String
  33.         Dim wnd As String
  34.         Dim wnddir As String
  35.         Dim rlfl As String
  36.         Dim humid As Integer
  37.         Dim visib As Integer
  38.         Dim precip As Integer
  39.         Dim uvindx As String
  40.         Dim dwpnt As Integer
  41.         Dim clcover As Integer
  42.         Dim wchill As Integer
  43.         Public ReadOnly Property Condition As String
  44.             Get
  45.                 Return cond
  46.             End Get
  47.         End Property
  48.         Public ReadOnly Property Temperature As String
  49.             Get
  50.                 Return tmp
  51.             End Get
  52.         End Property
  53.         Public ReadOnly Property WindSpeed As String
  54.             Get
  55.                 Return wnd
  56.             End Get
  57.         End Property
  58.         Public ReadOnly Property WindDirection As String
  59.             Get
  60.                 Return wnddir
  61.             End Get
  62.         End Property
  63.         Public ReadOnly Property RealFeal As String
  64.             Get
  65.                 Return rlfl
  66.             End Get
  67.         End Property
  68.         Public ReadOnly Property Humidity As Integer
  69.             Get
  70.                 Return humid
  71.             End Get
  72.         End Property
  73.         Public ReadOnly Property Visibility As Integer
  74.             Get
  75.                 Return visib
  76.             End Get
  77.         End Property
  78.         Public ReadOnly Property Precipitation As Integer
  79.             Get
  80.                 Return precip
  81.             End Get
  82.         End Property
  83.         Public ReadOnly Property UVIndex As String
  84.             Get
  85.                 Return uvindx
  86.             End Get
  87.         End Property
  88.         Public ReadOnly Property DewPoint As Integer
  89.             Get
  90.                 Return dwpnt
  91.             End Get
  92.         End Property
  93.         Public ReadOnly Property CloudCover As Integer
  94.             Get
  95.                 Return clcover
  96.             End Get
  97.         End Property
  98.         Public ReadOnly Property WindChill As Integer
  99.             Get
  100.                 Return wchill
  101.             End Get
  102.         End Property
  103.         Public Sub New(ByVal cnd As String, tmp2 As String, wnd2 As String, wnddir2 As String, rld As String, hum As String, vis As String, prec As String, uvn As String, dwn As String, clc As String, wc As String)
  104.             cond = cnd
  105.             tmp = tmp2
  106.             wnd = wnd2
  107.             wnddir = wnddir2
  108.             rlfl = rld
  109.             humid = hum
  110.             visib = vis
  111.             precip = prec
  112.             uvindx = uvn
  113.             dwpnt = dwn
  114.             clcover = clc
  115.             wchill = wc
  116.         End Sub
  117.     End Class
  118.     Public Class ForecastCondition
  119.  
  120.         Dim dh As String
  121.         Dim dl As String
  122.         Dim drh As String
  123.         Dim drl As String
  124.         Dim ddwnspd As String
  125.         Dim ddwndir As String
  126.         Dim dramound As String
  127.         Dim dsamound As String
  128.         Dim diamound As String
  129.         Dim dpamount As String
  130.         Dim dtstormamount As String
  131.         Dim nh As String
  132.         Dim nl As String
  133.         Dim nrh As String
  134.         Dim nrl As String
  135.         Dim ndwnspd As String
  136.         Dim ndwndir As String
  137.         Dim nramound As String
  138.         Dim nsamound As String
  139.         Dim niamound As String
  140.         Dim npamount As String
  141.         Dim ntstormamount As String
  142.         Dim dncd As String
  143.         Dim ncnd As String
  144.         Dim daycod As String
  145.         Public ReadOnly Property Day As String
  146.             Get
  147.                 Return daycod
  148.             End Get
  149.         End Property
  150.         Public ReadOnly Property DayTime As DayTimer
  151.             Get
  152.                 Return New DayTimer(dh, dl, drh, drl, ddwnspd, ddwndir, dramound, dsamound, diamound, dpamount, dtstormamount, dncd)
  153.             End Get
  154.         End Property
  155.         Public ReadOnly Property NightTime As NightTimer
  156.             Get
  157.                 Return New NightTimer(nh, nl, nrh, nrl, ndwnspd, ndwndir, nramound, nsamound, niamound, npamount, ntstormamount, ncnd)
  158.             End Get
  159.         End Property
  160.         Public Sub New(ddh As String, dll As String, ddrh As String, ddrl As String, dddwnspd As String, dddwndir As String, ddramound As String, ddsamound As String, ddiamound As String, ddpamount As String, ddta As String _
  161.                        , nnh As String, nnl As String, ndrh As String, ndrl As String, nwndspd As String, nwnddir As String, ndramount As String, ndsamound As String, ndiamound As String, ndpamound As String, ndta As String _
  162.                        , dayc As String, dcond As String, ncond As String)
  163.             dh = ddh
  164.             dl = dll
  165.             drh = ddrh
  166.             drl = ddrl
  167.             ddwnspd = dddwnspd
  168.             ddwndir = dddwndir
  169.             dramound = ddramound
  170.             dsamound = ddsamound
  171.             diamound = ddiamound
  172.             dpamount = ddpamount
  173.             dtstormamount = ddta
  174.             nh = nnh
  175.             nl = nnl
  176.             nrh = ndrh
  177.             nrl = ndrl
  178.             ndwnspd = nwndspd
  179.             ndwndir = nwnddir
  180.             nramound = ndramount
  181.             nsamound = ndsamound
  182.             niamound = ndiamound
  183.             npamount = ndpamound
  184.             ntstormamount = ndta
  185.             daycod = dayc
  186.             dncd = dcond
  187.             ncnd = ncond
  188.         End Sub
  189.         Class DayTimer
  190.             Dim h As String
  191.             Dim l As String
  192.             Dim rh As String
  193.             Dim rl As String
  194.             Dim dwnspd As String
  195.             Dim dwndir As String
  196.             Dim ramound As String
  197.             Dim samound As String
  198.             Dim iamound As String
  199.             Dim pamound As String
  200.             Dim tstormamound As String
  201.             Dim cond As String
  202.             Public ReadOnly Property Condition As String
  203.                 Get
  204.                     Return cond
  205.                 End Get
  206.             End Property
  207.             Public ReadOnly Property High As String
  208.                 Get
  209.                     Return h
  210.                 End Get
  211.             End Property
  212.             Public ReadOnly Property Low As String
  213.                 Get
  214.                     Return l
  215.                 End Get
  216.             End Property
  217.             Public ReadOnly Property RealFeelHigh As String
  218.                 Get
  219.                     Return rh
  220.                 End Get
  221.             End Property
  222.             Public ReadOnly Property WindSpeed As String
  223.                 Get
  224.                     Return dwnspd
  225.                 End Get
  226.             End Property
  227.             Public ReadOnly Property WindDirection As String
  228.                 Get
  229.                     Return dwndir
  230.                 End Get
  231.             End Property
  232.             Public ReadOnly Property RainAmount As String
  233.                 Get
  234.                     Return ramound
  235.                 End Get
  236.             End Property
  237.             Public ReadOnly Property SnowAmount As String
  238.                 Get
  239.                     Return samound
  240.                 End Get
  241.             End Property
  242.             Public ReadOnly Property IceAmount As String
  243.                 Get
  244.                     Return iamound
  245.                 End Get
  246.             End Property
  247.             Public ReadOnly Property Precipitation As String
  248.                 Get
  249.                     Return pamound
  250.                 End Get
  251.             End Property
  252.             Public ReadOnly Property ThunderstormPropebility As String
  253.                 Get
  254.                     Return tstormamound
  255.                 End Get
  256.             End Property
  257.             Public Sub New(hi As String, lo As String, rhi As String, hlo As String, wndspd As String, wnddir As String, r As String, s As String, i As String, p As String, ta As String, cnd As String)
  258.                 h = hi
  259.                 l = lo
  260.                 rh = rhi
  261.                 rl = hlo
  262.                 dwnspd = wndspd
  263.                 dwndir = wnddir
  264.                 ramound = r
  265.                 samound = s
  266.                 iamound = i
  267.                 pamound = p
  268.                 tstormamound = ta
  269.                 cond = cnd
  270.             End Sub
  271.         End Class
  272.         Class NightTimer
  273.  
  274.             Dim h As String
  275.             Dim l As String
  276.             Dim rh As String
  277.             Dim rl As String
  278.             Dim dwnspd As String
  279.             Dim dwndir As String
  280.             Dim ramound As String
  281.             Dim samound As String
  282.             Dim iamound As String
  283.             Dim pamound As String
  284.             Dim tstormamound As String
  285.             Dim cond As String
  286.             Public ReadOnly Property Condition As String
  287.                 Get
  288.                     Return cond
  289.                 End Get
  290.             End Property
  291.             Public ReadOnly Property High As String
  292.                 Get
  293.                     Return h
  294.                 End Get
  295.             End Property
  296.             Public ReadOnly Property Low As String
  297.                 Get
  298.                     Return l
  299.                 End Get
  300.             End Property
  301.             Public ReadOnly Property RealFeelHigh As String
  302.                 Get
  303.                     Return rh
  304.                 End Get
  305.             End Property
  306.             Public ReadOnly Property WindSpeed As String
  307.                 Get
  308.                     Return dwnspd
  309.                 End Get
  310.             End Property
  311.             Public ReadOnly Property WindDirection As String
  312.                 Get
  313.                     Return dwndir
  314.                 End Get
  315.             End Property
  316.             Public ReadOnly Property RainAmount As String
  317.                 Get
  318.                     Return ramound
  319.                 End Get
  320.             End Property
  321.             Public ReadOnly Property SnowAmount As String
  322.                 Get
  323.                     Return samound
  324.                 End Get
  325.             End Property
  326.             Public ReadOnly Property IceAmount As String
  327.                 Get
  328.                     Return iamound
  329.                 End Get
  330.             End Property
  331.             Public ReadOnly Property Precipitation As String
  332.                 Get
  333.                     Return pamound
  334.                 End Get
  335.             End Property
  336.             Public ReadOnly Property ThunderstormPropebility As String
  337.                 Get
  338.                     Return tstormamound
  339.                 End Get
  340.             End Property
  341.             Public Sub New(hi As String, lo As String, rhi As String, hlo As String, wndspd As String, wnddir As String, r As String, s As String, i As String, p As String, ta As String, cnd As String)
  342.                 h = hi
  343.                 l = lo
  344.                 rh = rhi
  345.                 rl = hlo
  346.                 dwnspd = wndspd
  347.                 dwndir = wnddir
  348.                 ramound = r
  349.                 samound = s
  350.                 iamound = i
  351.                 pamound = p
  352.                 tstormamound = ta
  353.                 cond = cnd
  354.             End Sub
  355.         End Class
  356.     End Class
  357.  
  358.     Public Class ForecastCollection
  359.         Inherits CollectionBase
  360.         Public Overridable Sub Add(ByVal frday As ForecastCondition)
  361.             Me.List.Add(frday)
  362.         End Sub
  363.     End Class
  364. #End Region
  365.  
  366. #Region "Properties"
  367.     Dim locat As String
  368.     Dim cond As String
  369.     Dim tmp As String
  370.     Dim wnd As String
  371.     Dim wnddir As String
  372.     Dim rlfl As String
  373.     Dim humid As Integer
  374.     Dim visib As Integer
  375.     Dim precip As Integer
  376.     Dim uvindx As String
  377.     Dim dwpnt As Integer
  378.     Dim clcover As Integer
  379.     Dim wchill As Integer
  380.     Dim fconditionlist As New ForecastCollection
  381.     Public ReadOnly Property Current As CurrentConditions
  382.         Get
  383.             Return New CurrentConditions(cond, tmp, wnd, wnddir, rlfl, humid, visib, precip, uvindx, dwpnt, clcover, wchill)
  384.         End Get
  385.     End Property
  386.     Public ReadOnly Property Forecast As ForecastCollection
  387.         Get
  388.             Return fconditionlist
  389.         End Get
  390.     End Property
  391. #End Region
  392. #Region "Functions"
  393.     Private Function getconditions()
  394.         Dim wbreq As WebRequest
  395.         Dim wbresp As WebResponse
  396.         Select Case lang
  397.             Case Language.Dutch
  398.                 Select Case tmpscale
  399.                     Case TemperatureScale.Celcius
  400.                         wbreq = WebRequest.Create("http://asus1.accu-weather.com/widget/asus1/weather-data.asp?location=" & locat & "&metric=1&langId=6")
  401.                         wbresp = wbreq.GetResponse
  402.                     Case TemperatureScale.Fahrenheit
  403.                         wbreq = WebRequest.Create("http://asus1.accu-weather.com/widget/asus1/weather-data.asp?location=" & locat & "&metric=0&langId=6")
  404.                         wbresp = wbreq.GetResponse
  405.                 End Select
  406.             Case Language.English
  407.                 Select Case tmpscale
  408.                     Case TemperatureScale.Celcius
  409.                         wbreq = WebRequest.Create("http://asus1.accu-weather.com/widget/asus1/weather-data.asp?location=" & locat & "&metric=1&langId=1")
  410.                         wbresp = wbreq.GetResponse
  411.                     Case TemperatureScale.Fahrenheit
  412.                         wbreq = WebRequest.Create("http://asus1.accu-weather.com/widget/asus1/weather-data.asp?location=" & locat & "&metric=0&langId=1")
  413.                         wbresp = wbreq.GetResponse
  414.                 End Select
  415.         End Select
  416.  
  417.         Dim strreader As New StreamReader(wbresp.GetResponseStream, Encoding.UTF8)
  418.         Dim xml As String = strreader.ReadToEnd
  419.         Dim xdoc As XDocument = XDocument.Parse(xml)
  420.         Dim xel As XElement = xdoc.Root.Element(XName.Get("currentconditions", xdoc.Root.Name.Namespace.NamespaceName))
  421.         cond = xel.Element("weathertext").Value
  422.         tmp = xel.Element("temperature").Value
  423.         wnd = xel.Element("windspeed").Value
  424.         wnddir = xel.Element("winddirection").Value
  425.  
  426.         rlfl = xel.Element("realfeel").Value
  427.         humid = xel.Element("humidity").Value
  428.         visib = xel.Element("visibility").Value
  429.         precip = xel.Element("precip").Value
  430.         uvindx = xel.Element("uvindex").Attribute("index").Value & " - " & xdoc.Element("uvindex").Value
  431.         dwpnt = xel.Element("dewpoint").Value
  432.         clcover = xel.Element("cloudcover").Value
  433.         wchill = xel.Element("windchill").Value
  434.         For Each nod As XElement In xdoc.Root.Element(XName.Get("forecast", xdoc.Root.Name.Namespace.NamespaceName)).Elements()
  435.             Dim dh As Integer
  436.             Dim dl As Integer
  437.             Dim drh As Integer
  438.             Dim drl As Integer
  439.             Dim ddwnspd As Integer
  440.             Dim ddwndir As String
  441.             Dim dramound As Integer
  442.             Dim dsamound As Integer
  443.             Dim diamound As Integer
  444.             Dim dpamount As Integer
  445.             Dim dtstormamount As Integer
  446.             Dim nh As Integer
  447.             Dim nl As Integer
  448.             Dim nrh As Integer
  449.             Dim nrl As Integer
  450.             Dim ndwnspd As Integer
  451.             Dim ndwndir As String
  452.             Dim nramound As Integer
  453.             Dim nsamound As Integer
  454.             Dim niamound As Integer
  455.             Dim npamount As Integer
  456.             Dim ntstormamount As Integer
  457.             Dim daycod As String
  458.             Dim daycnd As String
  459.             Dim ncnd As String
  460.             Dim dt As XElement = nod.Element("daytime")
  461.             dh = dt.Element("hightemperature").Value
  462.             dl = dt.Element("lowtemperature").Value
  463.             drh = dt.Element("realfeelhigh").Value
  464.             drl = dt.Element("realfeellow").Value
  465.             ddwnspd = dt.Element("windspeed").Value
  466.             ddwndir = dt.Element("winddirection").Value
  467.             dramound = dt.Element("rainamount").Value
  468.             dsamound = dt.Element("snowamount").Value
  469.             diamound = dt.Element("iceamount").Value
  470.             dpamount = dt.Element("precipamount").Value
  471.             dtstormamount = dt.Element("tstormprob").Value
  472.             daycnd = dt.Element("txtshort").Value
  473.             Dim nt As XElement = nod.Element("nighttime")
  474.             nh = nt.Element("hightemperature").Value
  475.             nl = nt.Element("lowtemperature").Value
  476.             nrh = nt.Element("realfeelhigh").Value
  477.             nrl = nt.Element("realfeellow").Value
  478.             ndwnspd = nt.Element("windspeed").Value
  479.             ndwndir = nt.Element("winddirection").Value
  480.             nramound = nt.Element("rainamount").Value
  481.             nsamound = nt.Element("snowamount").Value
  482.             niamound = nt.Element("iceamount").Value
  483.             npamount = nt.Element("precipamount").Value
  484.             ntstormamount = nt.Element("tstormamount").Value
  485.             ncnd = nt.Element("txtshort").Value
  486.             daycod = nod.Element("daycode").Value
  487.             fconditionlist.Add(New ForecastCondition(dh, dl, drh, drl, ddwnspd, ddwndir, dramound, dsamound, diamound, dpamount, dtstormamount, nh, nl, nrh, nrl, ndwnspd, ndwndir, nramound, nsamound, niamound, npamount, ntstormamount, daycod, daycnd, ncnd))
  488.         Next
  489.     End Function
  490. #End Region
  491.  
  492. End Class
Aug 8 '13 #1
Share this Question
Share on Google+
1 Reply


!NoItAll
100+
P: 296
Change
Expand|Select|Wrap|Line Numbers
  1. Dim xel As XElement = xdoc.Root.Element(XName.Get("currentconditions", xdoc.Root.Name.Namespace.NamespaceName))
  2.  
To
Expand|Select|Wrap|Line Numbers
  1. Dim xel As New XElement
  2. xel = xdoc.Root.Element(XName.Get("currentconditions", xdoc.Root.Name.Namespace.NamespaceName))
  3.  
Sep 1 '13 #2

Post your reply

Sign in to post your reply or Sign up for a free account.