1
public string GetArtistThumbnail(string artistName)
{
    var request =
        WebRequest.Create("http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=" + artistName +
        "&api_key=" +
         APIKey) as HttpWebRequest;

    using (var response = request.GetResponse() as HttpWebResponse)
    {
        var ds = new DataSet();
        ds.ReadXml(response.GetResponseStream()); // <-- Exception is thrown here
    }

    return "";   
}

上述方法基本上是从LastFM 的 API Services之一检索 xml 文件。

现在,使用该方法从 xml 填充数据集时,我面临以下异常ReadXml

The table (artist) cannot be the child table to itself in nested relations.


这是正在检索的 XML 文件的示例

请注意,在 XML 文件中有一个嵌套Artist,我显然认为这就是异常的原因。


我的问题,我怎样才能防止这种情况发生?关于嵌套表

4

3 回答 3

3

据我所知,DataSet 并不是要保存任何类型的 XML。在这种情况下你真的需要数据集吗?

我建议切换到 linq 2 xml 或 XmlDocument 来操作 Web 服务的结果。

于 2009-03-23T23:59:39.273 回答
1

我认为 Freddy 的回答有其优点,但您可以在调用 ReadXml 之前手动定义 DataSet 架构,而不是依赖 xml 来定义架构。

您还可以尝试将 ReadXml 与 GetResponse 分开,并在调用 ReadXml 之前执行 xslt,即使架构与 DataSet 兼容。

远射...关闭 DataSet.EnforceConstraints

于 2009-03-24T00:01:47.193 回答
0

尝试使用 http://ws.audioscrobbler.com/2.0/artist/iron+maiden/info.xml 格式

于 2009-10-24T20:55:39.133 回答