【问题标题】:Problems transforming a REST response to a XDocument将 REST 响应转换为 XDocument 的问题
【发布时间】:2009-01-19 22:12:05
【问题描述】:

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

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

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

【问题讨论】:

  • 你需要发布返回的 XML,或者你用来调用的代码,这太少了。

标签: c# xml rest


【解决方案1】:

在我看来,您将响应保存在字符串中。如果是这种情况,您可以尝试在 XDocument 上使用 Parse 方法,该方法用于从字符串中解析 XML。

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

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

【讨论】:

    【解决方案2】:

    这是一个可用于查询服务的示例:

    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);
                }
            }
        }
    }
    

    【讨论】:

    • 你可以做 XDocument doc = XDocument.Load(".."); 如果我没记错的话。戴夫
    【解决方案3】:

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

    【讨论】:

    • 谢谢,我会看看这篇博文。
    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 2014-08-08
    相关资源
    最近更新 更多