【问题标题】:Windows Phone 8: Reading XML from WebWindows Phone 8:从 Web 读取 XML
【发布时间】:2024-04-26 09:50:01
【问题描述】:

作为我正在处理的项目的一部分,我正在尝试将此 XML 页面 (http://weather.yahooapis.com/forecastrss?w=2459115) 加载到我的 Windows Phone 8 应用程序中,并将多个值保存为变量。

我正在使用 Visual Studio 2012 专业版和 VB.net。

到目前为止,我已经搜索并尝试了多种方法,只是试图保存一个变量以开始,但我无法读取它。

这是我目前所拥有的

Partial Public Class MainPage
Inherits PhoneApplicationPage
Private XMLHANDLE As WebClient

Dim lang As String

Public Sub New()
    InitializeComponent()

    SupportedOrientations = SupportedPageOrientation.Portrait Or SupportedPageOrientation.Landscape


    Dim XML As String = "http://weather.yahooapis.com/forecastrss?w=2459115"
    XMLHANDLE = New WebClient()
    XMLHANDLE.DownloadStringAsync(New Uri(XML))

    AddHandler XMLHANDLE.DownloadStringCompleted, AddressOf XMLHANDLE_DownloadStringCompleted
    AddHandler XMLHANDLE.DownloadProgressChanged, AddressOf XMLHANDLE_DownloadProgressChanged
End Sub


Private Sub XMLHANDLE_DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs)

End Sub


Private Sub XMLHANDLE_DownloadStringCompleted(sender As Object, e As DownloadStringCompletedEventArgs)
    If e.[Error] Is Nothing AndAlso Not e.Cancelled Then
        Dim resultElements As XElement = XElement.Parse(e.Result)


        lang = resultElements.Element("language").Value
        Console.WriteLine(lang)
    End If

End Sub

我的代码一直在此行查找空值异常

lang = resultElements.Element("language").Value

【问题讨论】:

    标签: xml vb.net visual-studio-2012 windows-phone-8


    【解决方案1】:

    Element 仅查看当前元素的直接子元素,因此您无法获得这么简单的 language 元素。

    试试看:

    lang = resultElements.Element("channel").Element("language").Value
    

    或者使用Descendants方法:

    lang = resultElements.Descendants("language").First().Value
    

    【讨论】:

    • 谢谢!我不知道,只是让我的头围绕 XML 感谢您的快速回答,不会让我标记为答案,但只要它允许我就去做!
    • 只是另一个问题说我想从这个 去吧?