首先,这是一个解决方案,而不是一个问题。我花了一段时间才解决,所以我认为我的决议可能值得分享。
我试图使用XDoument.Load(feedUrl)
加载RSS Feed并获得上述异常。我在浏览器中检查了feed itself,格式看起来不错。所以在找到一些类似的情况之后:
和其他地方: http://www.ipreferjim.com/2014/09/data-at-the-root-level-is-invalid-line-1-position-1/
答案 0 :(得分:2)
...我认为它可能不是格式化,并且该网站可能会将请求视为机器人并提供备用响应。
事实上,这是事实!我尝试使用HttpWebRequest
(不设置使用者)获取Feed,但我只收到@
。我尝试使用一个useragent,我得到了我追求的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 "";
}
}