1

我需要提取这个 XML 文档的一个 XML 节点:

http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect?artist=michael%20jackson&song=bad

我无法弄清楚这一点。下面是我用来从该 url 读取 XML 的当前代码。

private void button1_Click(object sender, RoutedEventArgs e)
{
    WebClient wc = new WebClient();
    wc.DownloadStringCompleted += HttpsCompleted;
    wc.DownloadStringAsync(new Uri("http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect?artist=michael%20jackson&song=bad"));
}

private void HttpsCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error == null)
    {
        XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None);
        this.textBox1.Text = xdoc.LastNode.ToString();
    }
}

如何lyric从提供的 URL 从 XML 文档中访问节点?

4

1 回答 1

4

在这种情况下使用 Linq To Xml。请注意,xml 结果中有一个命名空间 ( xmlns="http://api.chartlyrics.com/")。

一个非常基本的例子可能是:

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error == null)
    {
        XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None);
        var lyric = xdoc.Descendants(XName.Get("Lyric","http://api.chartlyrics.com/")).FirstOrDefault();

        this.textBox1.Text = lyric.Value;
    }
}
于 2013-06-04T11:24:10.357 回答