Quantcast
Channel: Use Syndicationfeed to load XML with encoded links - Stack Overflow
Viewing all articles
Browse latest Browse all 2

Use Syndicationfeed to load XML with encoded links

$
0
0

I'm reading an RSS using the following code:

var reader = XmlReader.Create(url);SyndicationFeed.Load(reader);

The RSS looks like this, and SyndicationFeed.Load will throw an exception when the link tag contains encoded characters (in this case å encoded as %C3%A5)

<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><atom:link rel="self" type="application/rss+xml" href="http://example.com/rss" /><title>My RSS</title><description>My RSS</description><pubDate>Mon, 04 Jul 2016 08:19:50 +0200</pubDate><generator>RSS Generator 1.1</generator><link>http://example.com/rss</link><item><title>A title</title><description>A description</description><link>http://bl%C3%A5ljus.se</link></item></channel></rss>

The exception is the following:

System.Xml.XmlException: Error in line x position x. An error was encountered when parsing the item's XML. Refer to the inner exception for more details. ---> System.UriFormatException: Invalid URI: The hostname could not be parsed.   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)   at System.Uri..ctor(String uriString, UriKind uriKind)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadAlternateLink(XmlReader reader, Uri baseUri)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadItemFrom(XmlReader reader, SyndicationItem result, Uri feedBaseUri)   --- End of inner exception stack trace ---   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadItemFrom(XmlReader reader, SyndicationItem result, Uri feedBaseUri)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadItem(XmlReader reader, SyndicationFeed feed)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadItems(XmlReader reader, SyndicationFeed feed, Boolean& areAllItemsRead)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadXml(XmlReader reader, SyndicationFeed result)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadFeed(XmlReader reader)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadFrom(XmlReader reader)   at System.ServiceModel.Syndication.SyndicationFeed.Load[TSyndicationFeed](XmlReader reader)System.UriFormatException: Invalid URI: The hostname could not be parsed.   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)   at System.Uri..ctor(String uriString, UriKind uriKind)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadAlternateLink(XmlReader reader, Uri baseUri)   at System.ServiceModel.Syndication.Rss20FeedFormatter.ReadItemFrom(XmlReader reader, SyndicationItem result, Uri feedBaseUri)

Are there any settings that I can pass when loading the XML to tell SyndicationFeed to ignore parsing errors? Or some other solution?


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images