【问题标题】:XDocument.Load(feedUrl) returns "Data at the root level is invalid. Line 1, position 1."XDocument.Load(feedUrl) 返回“根级别的数据无效。第 1 行,位置 1。”
【发布时间】:2014-11-06 08:22:16
【问题描述】:

首先,这更像是一个解决方案,而不是一个问题。我花了一段时间才解决,所以我认为我的解决方案值得分享。

我尝试使用 XDoument.Load(feedUrl) 加载 RSS 提要,但遇到了上述异常。我在浏览器中检查了feed itself,格式看起来不错。所以在这里找到一些类似的情况后:

和其他地方: http://www.ipreferjim.com/2014/09/data-at-the-root-level-is-invalid-line-1-position-1/

【问题讨论】:

    标签: .net xml rss httpwebrequest linq-to-xml


    【解决方案1】:

    ...我认为这可能不是格式问题,并且相关网站可能会将请求视为机器人并提供替代响应。

    事实上,情况就是这样!我尝试使用 HttpWebRequest (没有设置用户代理)获取提要,但我只收到了 @ 。我尝试了 with 一个用户代理,我得到了我想要的 XML。那时只是使用XDocument.Parse()

                XDocument doc;
    
                try
                {
                    doc = XDocument.Load(feedUrl);
    
                }
                catch (XmlException x)
                {
                    string xml = Utilities.WebGetRequest(feedUrl);
                    doc = XDocument.Parse(xml);
    
                }
    //carry on working with the doc
    

    ...

      public static string WebGetRequest(string url)
      {
          try
          {
              HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
              request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
              Stream objStream;
              HttpWebResponse response;
              string retVal;
              StreamReader objReader;
              try
              {
                  response = request.GetResponse() as HttpWebResponse;
              }
              catch (WebException ex)
              {
                  response = ex.Response as HttpWebResponse;
              }
              objStream = response.GetResponseStream();
              objReader = new StreamReader(objStream);
              retVal = objReader.ReadToEnd();
    
              objReader.Dispose();
              objStream.Dispose();
              response.Dispose();
              return retVal;
          }
          catch (Exception ex)
          {
              //Log("FeedRequest", url, true, ex);   //log it, display it and move on
              return "";
          }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 2018-03-30
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多