.net - XDocument.Load(feedUrl)返回 "Data at the root level is invalid. Line 1, position 1."

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

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

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

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

最佳答案

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

事实确实如此!我尝试使用 HttpWebRequest 获取提要(不设置用户代理),但只收到 @ 。我尝试使用用户代理,并得到了我想要的 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 "";
      }
  }

关于.net - XDocument.Load(feedUrl)返回 "Data at the root level is invalid. Line 1, position 1.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26774752/

相关文章:

java - Xml 解析、编辑、保存并在 Java 中创建

asp.net - 数据库表或 XML

javascript - 使用 AJAX 和 jQuery 填充 div

java - 使用 Java 获取 iTunes RSS feed

c# - 确定进程正在使用哪个网络适配器

c# - 哪个运行时性能更快 : WPF or Winforms?

c# - 如何在 nunit 中测试泛型集合?

.net - 在 MonoTouch 中找不到 System.Runtime.Serialization.Json

c# - 如何获取 Telerik TreeView 的层次结构节点级别

c# - RSS 提要 XMLDataSource 过滤器 RSS 项目