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's API Services之一检索xml文件。
现在,当使用ReadXml
方法从xml填充数据集时,我面临以下异常:
The table (artist) cannot be the child table to itself in nested relations.
Here is an example正在检索的XML文件
请注意,XML文件中有一个嵌套的Artist
,我显然认为这就是异常的原因。
我的问题,如何防止这种情况发生?关于嵌套表格
答案 0 :(得分:3)
据我所知,DataSet不仅仅适用于任何类型的XML。在这种情况下你真的需要一个数据集吗?
我建议切换到linq 2 xml或XmlDocument来操作Web服务的结果。
答案 1 :(得分:1)
我认为Freddy的答案是有价值的,但您可以在调用ReadXml之前手动定义DataSet架构,而不是依赖于xml来定义架构。
您也可以尝试从GetResponse中分离ReadXml并在调用ReadXml之前执行xslt,即使模式与DataSet兼容。
远射...关闭DataSet.EnforceConstraints
答案 2 :(得分:0)