将REST响应转换为XDocument的问题

时间:2009-01-19 22:12:05

标签: c# xml rest

我实际上正在使用我通过REST调用的last.FM web服务API。当我得到响应时,我尝试将结果转换为XDocument,因此我可以使用LINQ来处理它。

但是当我将结果字符串传递给XDocumnet构造函数时,会抛出ArgumentException,告诉我“无法将非空格字符添加到内容中”。不幸的是,我对Web服务和XML编程很陌生,所以我真的不知道如何解释这个异常。

我希望有人能给我一个如何解决这个问题的提示。

3 个答案:

答案 0 :(得分:4)

听起来好像你在一个字符串中持有响应。如果是这种情况,您可以尝试在XDocument上使用Parse方法,该方法用于从字符串中解析XML。

string myResult = "<?xml blahblahblah>";
XDocument doc = XDocument.Parse(myResult);

这可能会也可能不会解决您的问题。只是一个值得一试的建议,看看你是否得到了不同的结果。

答案 1 :(得分:3)

以下是您可以用来查询服务的示例:

class Program
{
    static void Main(string[] args)
    {
        using (WebClient client = new WebClient())
        using (Stream stream = client.OpenRead("http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=b25b959554ed76058ac220b7b2e0a026&artist=Cher&album=Believe"))
        using (TextReader reader = new StreamReader(stream))
        {
            XDocument xdoc = XDocument.Load(reader);
            var summaries = from element in xdoc.Descendants()
                    where element.Name == "summary"
                    select element;
            foreach (var summary in summaries)
            {
                Console.WriteLine(summary.Value);
            }
        }
    }
}

答案 2 :(得分:1)

http://jamescrisp.org/2008/08/08/simple-rest-client/发布了一个小型REST客户端。也许是你的起点。