我正在尝试为Windows Phone 8制作一个RSS应用程序,但每当我尝试使用XmlReader下载RSS内容时都会发生错误。
using System.Xml.Linq; using System.Net; using System.ServiceModel.Syndication; XmlReaderSettings settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Ignore; XmlReader reader = XmlReader.Create(http://feeds.bbci.co.uk/news/business/rss.xml, settings); SyndicationFeed feed = SyndicationFeed.Load(reader); reader.Close();
该错误是在“XmlReader reader = XmlReader.Create ….”行上find的。完整的错误信息是:
System.Xml.ni.dll中发生第一次机会exception的types“System.Xml.XmlException”
其他信息:无法打开“ http://feeds.bbci.co.uk/news/business/rss.xml ”。 Uri参数必须是文件系统的相对path。
感谢您的帮助! 🙂
你正在得到这个错误,因为它期望LocalStorage
的文件不是网址。 所以你必须下载文件并将其转换如下:
public MainPage() { // our web downloader WebClient downloader = new WebClient(); // our web address to download, notice the UriKind.Absolute Uri uri = new Uri("http://feeds.bbci.co.uk/news/business/rss.xml", UriKind.Absolute); // we need to wait for the file to download completely, so lets hook the DownloadComplete Event downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(FileDownloadComplete); // start the download downloader.DownloadStringAsync(uri); } // this event will fire if the download was successful void FileDownloadComplete(object sender, DownloadStringCompletedEventArgs e) { // e.Result will contain the files byte for byte // your settings XmlReaderSettings settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Ignore; // create a memory stream for us to use from the bytes of the downloaded file MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(e.Result ?? "")); // create your reader from the stream of bytes XmlReader reader = XmlReader.Create(ms, settings); // do whatever you want with the reader // ........ // close reader.Close() }