为 DataSet 调用 ReadXml 时出现 XML 解析错误
Posted
技术标签:
【中文标题】为 DataSet 调用 ReadXml 时出现 XML 解析错误【英文标题】:XML parsing error when callinng ReadXml for a DataSet 【发布时间】:2013-01-02 03:13:36 【问题描述】:代码
XmlTextReader reader = new XmlTextReader("http://www.meloy.kommune.no/no/Abonner-pa-nyheter/Nyheter-Meloy-Kommune/");
DataSet ds = new DataSet();
ds.ReadXml(reader);
在调用ds.ReadXml
时导致此错误:
System.Net.WebException:远程服务器返回错误:(500) 内部服务器错误。 在 System.Net.HttpWebRequest.GetResponse() 在 System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri,ICredentials 凭据,IWebProxy 代理,RequestCachePolicy cachePolicy) 在 System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri,字符串角色,ObjectToReturn 类型) 在 System.Xml.XmlTextReaderImpl.OpenUrlDelegate(对象 xmlResolver) 在 System.Threading.CompressedStack.runTryCode(对象 userData) 在 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode 代码,CleanupCode backoutCode,对象 userData) 在 System.Threading.CompressedStack.Run(CompressedStack 压缩堆栈,ContextCallback 回调,对象状态) 在 System.Xml.XmlTextReaderImpl.OpenUrl() 在 System.Xml.XmlTextReaderImpl.Read() 在 System.Xml.XmlReader.MoveToContent() 在 System.Data.DataSet.ReadXml(XmlReader 阅读器,布尔拒绝解析) 在 ASP.templates_units_rsslistingtest_ascx.LoadFeedServer(字符串 url) 在 ASP.templates_units_rsslistingtest_ascx.SetupDataGridServer(Int32 max)
错误的原因是什么,我该如何解决?
编辑: 这有效:
WebClient wc = new WebClient();
Stream st = wc.OpenRead("d:\\episerver\\test.xml");
string rss ="";
using (StreamReader sr = new StreamReader(st))
rss = sr.ReadToEnd();
XmlReader reader = XmlReader.Create(new StringReader(rss));
DataSet ds = new DataSet();
ds.ReadXml(reader);
【问题讨论】:
尝试指定你的xml的xmlSchema,然后用数据集读取xml.. 尝试先下载文件,看看能不能从localhost读取。这至少应该让您清楚地知道哪里有错误。 @Animal,谢谢!当文件位于本地时,它可以工作。但是,不是当我从这里下载文件时'meloy.kommune.no/no/Abonner-pa-nyheter/Nyheter-Meloy-Kommune' 但是,我可以访问网站“meloy.kommune.no/no/Abonner-pa-nyheter/Nyheter-Meloy-Kommune”,而我正在执行代码的服务器没有任何问题。 当我使用 EPiServer 的博客提要时它可以工作。为什么它适用于一个提要地址而不适用于另一个? 【参考方案1】:我认为这与 C# Web 请求创建的标头有关。该线程似乎处理相同的问题:
How do I read a secure rss feed into a SyndicationFeed without providing credentials?
【讨论】:
谢谢!使用该线程中提供的代码解决了问题。以上是关于为 DataSet 调用 ReadXml 时出现 XML 解析错误的主要内容,如果未能解决你的问题,请参考以下文章
DataSet.ReadXml - 错误“输入字符串的格式不正确”
将 XML 读入 DataTable 时出现 FormatException
在 Apache Spark Dataset<Row> 上应用 flatMap 操作时出现意外的编码器行为
使用 MirroredStrategy 时出现 AssertionError:isinstance(x, dataset_ops.DatasetV2)