EDN Admin
Well-known member
Im using the following code to read rss feeds, which works with most feeds.
code:
<div style="color:black; background-color:white
<pre>XmlReaderSettings settings = <span style="color:blue new XmlReaderSettings
{
IgnoreWhitespace = <span style="color:blue true,
CheckCharacters = <span style="color:blue true,
CloseInput = <span style="color:blue true,
IgnoreComments = <span style="color:blue true,
IgnoreProcessingInstructions = <span style="color:blue true,
DtdProcessing = DtdProcessing.Ignore <span style="color:green // .NET 4.0 option
};
<span style="color:blue if (String.IsNullOrEmpty(sourceUrl))
<span style="color:blue return <span style="color:blue null;
<span style="color:blue using (XmlReader reader = XmlReader.Create(<span style="color:blue new StringReader(container.Result), settings))
{
<span style="color:blue if (reader.ReadState == ReadState.Initial)
reader.MoveToContent();
<span style="color:green // atom?
Atom10FeedFormatter atom = <span style="color:blue new Atom10FeedFormatter();
<span style="color:green // try to read it as an atom feed
<span style="color:blue if (atom.CanRead(reader))
{
atom.ReadFrom(reader);
<span style="color:blue return atom.Feed;
}
<span style="color:green //rss 2.0?
Rss20FeedFormatter rss = <span style="color:blue new Rss20FeedFormatter();
<span style="color:green // try reading it as an rss feed
<span style="color:blue if (rss.CanRead(reader))
{
rss.ReadFrom(reader);
<span style="color:blue return rss.Feed;
}
<span style="color:green // neither?
<span style="color:blue return <span style="color:blue null;
}
[/code]
When we try to read the facebook feed they give something like this (removed data for clarity)
xml:
<div style="color:black; background-color:white
<pre><span style="color:blue <?<span style="color:#a31515 xml <span style="color:red version<span style="color:blue =<span style="color:black "<span style="color:blue 1.0<span style="color:black " <span style="color:red encoding<span style="color:blue =<span style="color:black "<span style="color:blue utf-8<span style="color:black "<span style="color:blue ?>
<span style="color:blue <<span style="color:#a31515 rss <span style="color:red version<span style="color:blue =<span style="color:black "<span style="color:blue 2.0<span style="color:black "
<span style="color:red xmlns:media<span style="color:blue =<span style="color:black "<span style="color:blue http://search.yahoo.com/mrss/<span style="color:black "
<span style="color:red xmlns:dc<span style="color:blue =<span style="color:black "<span style="color:blue http://purl.org/dc/elements/1.1/<span style="color:black "
<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 channel<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 title<span style="color:blue ><span style="color:blue </<span style="color:#a31515 title<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 link<span style="color:blue ><span style="color:blue </<span style="color:#a31515 link<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 description<span style="color:blue ><span style="color:blue </<span style="color:#a31515 description<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 language<span style="color:blue ><span style="color:blue </<span style="color:#a31515 language<span style="color:blue >
<category domain=" <span style="color:blue </<span style="color:#a31515 category<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 generator<span style="color:blue ><span style="color:blue </<span style="color:#a31515 docs<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 lastBuildDate<span style="color:blue ><span style="color:blue </<span style="color:#a31515 lastBuildDate<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 webMaster<span style="color:blue ><span style="color:blue </<span style="color:#a31515 webMaster<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 item<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 guid <span style="color:red isPermaLink<span style="color:blue =<span style="color:black "<span style="color:blue false<span style="color:black "<span style="color:blue ><span style="color:blue </<span style="color:#a31515 guid<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 title<span style="color:blue ><span style="color:blue </<span style="color:#a31515 title<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 link<span style="color:blue ><span style="color:blue </<span style="color:#a31515 link<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 description<span style="color:blue ><span style="color:blue </<span style="color:#a31515 description<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 pubDate<span style="color:blue ><span style="color:blue </<span style="color:#a31515 pubDate<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 author<span style="color:blue ><span style="color:blue </<span style="color:#a31515 author<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 dc<span style="color:blue :<span style="color:#a31515 creator<span style="color:blue ><span style="color:blue </<span style="color:#a31515 dc<span style="color:blue :<span style="color:#a31515 creator<span style="color:blue >
<span style="color:blue </<span style="color:#a31515 item<span style="color:blue >
<span style="color:blue </<span style="color:#a31515 channel<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 access<span style="color:blue :<span style="color:#a31515 restriction <span style="color:red relationship<span style="color:blue =<span style="color:black "<span style="color:blue deny<span style="color:black " <span style="color:red xmlns:access<span style="color:blue =<span style="color:black "<span style="color:blue http://www.bloglines.com/about/specs/fac-1.0<span style="color:black " <span style="color:blue />
<span style="color:blue </<span style="color:#a31515 rss<span style="color:blue >
[/code]
The issue is the the "access:restriction" line, the xml reader throws an "Element is an invalid XmlNodeType" error because the xmlns is defined inside the element not in the root elment, which I believe is legal. If I completely remove the entire
"access:restriction" line everything works just fine. What do i need to do to allow this style of xml to work when consuming an rss feed?
Note: container.Result is just a string of the xml
Thanks,
JB
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
View the full article
code:
<div style="color:black; background-color:white
<pre>XmlReaderSettings settings = <span style="color:blue new XmlReaderSettings
{
IgnoreWhitespace = <span style="color:blue true,
CheckCharacters = <span style="color:blue true,
CloseInput = <span style="color:blue true,
IgnoreComments = <span style="color:blue true,
IgnoreProcessingInstructions = <span style="color:blue true,
DtdProcessing = DtdProcessing.Ignore <span style="color:green // .NET 4.0 option
};
<span style="color:blue if (String.IsNullOrEmpty(sourceUrl))
<span style="color:blue return <span style="color:blue null;
<span style="color:blue using (XmlReader reader = XmlReader.Create(<span style="color:blue new StringReader(container.Result), settings))
{
<span style="color:blue if (reader.ReadState == ReadState.Initial)
reader.MoveToContent();
<span style="color:green // atom?
Atom10FeedFormatter atom = <span style="color:blue new Atom10FeedFormatter();
<span style="color:green // try to read it as an atom feed
<span style="color:blue if (atom.CanRead(reader))
{
atom.ReadFrom(reader);
<span style="color:blue return atom.Feed;
}
<span style="color:green //rss 2.0?
Rss20FeedFormatter rss = <span style="color:blue new Rss20FeedFormatter();
<span style="color:green // try reading it as an rss feed
<span style="color:blue if (rss.CanRead(reader))
{
rss.ReadFrom(reader);
<span style="color:blue return rss.Feed;
}
<span style="color:green // neither?
<span style="color:blue return <span style="color:blue null;
}
[/code]
When we try to read the facebook feed they give something like this (removed data for clarity)
xml:
<div style="color:black; background-color:white
<pre><span style="color:blue <?<span style="color:#a31515 xml <span style="color:red version<span style="color:blue =<span style="color:black "<span style="color:blue 1.0<span style="color:black " <span style="color:red encoding<span style="color:blue =<span style="color:black "<span style="color:blue utf-8<span style="color:black "<span style="color:blue ?>
<span style="color:blue <<span style="color:#a31515 rss <span style="color:red version<span style="color:blue =<span style="color:black "<span style="color:blue 2.0<span style="color:black "
<span style="color:red xmlns:media<span style="color:blue =<span style="color:black "<span style="color:blue http://search.yahoo.com/mrss/<span style="color:black "
<span style="color:red xmlns:dc<span style="color:blue =<span style="color:black "<span style="color:blue http://purl.org/dc/elements/1.1/<span style="color:black "
<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 channel<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 title<span style="color:blue ><span style="color:blue </<span style="color:#a31515 title<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 link<span style="color:blue ><span style="color:blue </<span style="color:#a31515 link<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 description<span style="color:blue ><span style="color:blue </<span style="color:#a31515 description<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 language<span style="color:blue ><span style="color:blue </<span style="color:#a31515 language<span style="color:blue >
<category domain=" <span style="color:blue </<span style="color:#a31515 category<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 generator<span style="color:blue ><span style="color:blue </<span style="color:#a31515 docs<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 lastBuildDate<span style="color:blue ><span style="color:blue </<span style="color:#a31515 lastBuildDate<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 webMaster<span style="color:blue ><span style="color:blue </<span style="color:#a31515 webMaster<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 item<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 guid <span style="color:red isPermaLink<span style="color:blue =<span style="color:black "<span style="color:blue false<span style="color:black "<span style="color:blue ><span style="color:blue </<span style="color:#a31515 guid<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 title<span style="color:blue ><span style="color:blue </<span style="color:#a31515 title<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 link<span style="color:blue ><span style="color:blue </<span style="color:#a31515 link<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 description<span style="color:blue ><span style="color:blue </<span style="color:#a31515 description<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 pubDate<span style="color:blue ><span style="color:blue </<span style="color:#a31515 pubDate<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 author<span style="color:blue ><span style="color:blue </<span style="color:#a31515 author<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 dc<span style="color:blue :<span style="color:#a31515 creator<span style="color:blue ><span style="color:blue </<span style="color:#a31515 dc<span style="color:blue :<span style="color:#a31515 creator<span style="color:blue >
<span style="color:blue </<span style="color:#a31515 item<span style="color:blue >
<span style="color:blue </<span style="color:#a31515 channel<span style="color:blue >
<span style="color:blue <<span style="color:#a31515 access<span style="color:blue :<span style="color:#a31515 restriction <span style="color:red relationship<span style="color:blue =<span style="color:black "<span style="color:blue deny<span style="color:black " <span style="color:red xmlns:access<span style="color:blue =<span style="color:black "<span style="color:blue http://www.bloglines.com/about/specs/fac-1.0<span style="color:black " <span style="color:blue />
<span style="color:blue </<span style="color:#a31515 rss<span style="color:blue >
[/code]
The issue is the the "access:restriction" line, the xml reader throws an "Element is an invalid XmlNodeType" error because the xmlns is defined inside the element not in the root elment, which I believe is legal. If I completely remove the entire
"access:restriction" line everything works just fine. What do i need to do to allow this style of xml to work when consuming an rss feed?
Note: container.Result is just a string of the xml
Thanks,
JB
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
View the full article