解析Windows Phone 8应用程序中的XML文件

时间:2015-07-29 14:38:05

标签: c# xml windows-phone-8

我知道已有解决方案,但我真的在努力解决这个问题。

我需要从URL加载XML文档并解析它以提取各种信息。我尝试过使用:

var doc = new XDocument();
doc = XDocument.Load(url);

这在独立的C#应用​​程序中运行良好,但它不能在手机应用程序中运行。我相信我需要使用WebClient.DownloadStringAsyncWebClient.DownloadStringCompleted异步执行此操作,但我不知道如何从此处获取文档以便我可以解析它。

感谢您的帮助。

编辑:如果它有用,我试图访问BigOven API并从中返回XML。

编辑#2:尝试异步方法后的代码。

public static string xml;
private static void DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error == null)
    {
        xml = e.Result; // this is always null
    }
}
public static string QueryApi(string searchTerm)
{
    WebClient wc = new WebClient();
    wc.DownloadStringCompleted += DownloadCompleted;
    wc.DownloadStringAsync(new Uri("http://www.w3schools.com/xml/note.xml"));
    var doc = XDocument.Parse(xml);
}

编辑#3:尝试等待下载完成后的代码。

public static string xml;
public static XDocument doc;
private static void DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error == null)
    {
        xml = e.Result; // this is always null
        doc = XDocument.Parse(xml);
    }
}
public static string QueryApi(string searchTerm)
{
    WebClient wc = new WebClient();
    wc.DownloadStringCompleted += DownloadCompleted;
    wc.DownloadStringAsync(new Uri("http://www.w3schools.com/xml/note.xml"));
}

1 个答案:

答案 0 :(得分:1)

这看起来比应该更复杂。与this answer类似,如何在Windows Phone since 7.5上使用HttpClient

static XDocument GetXml(string url)
{
    using (HttpClient client = new HttpClient())
    {
        var response = client.GetStreamAsync(url);
        return XDocument.Load(response.Result);
    }
}