Fix parsing of Atom feeds with attribute namespaces

This commit is contained in:
2018-07-18 08:16:50 -04:00
parent 59bb8ae3cd
commit a0214b98f1

View File

@@ -44,13 +44,13 @@ namespace FeedCenter.FeedParsers
if (node.Attributes == null) if (node.Attributes == null)
break; break;
XmlNode relNode = node.Attributes["rel"]; XmlNode relNode = GetAttribute(node, "rel");
if (relNode != null) if (relNode != null)
rel = relNode.InnerText; rel = relNode.InnerText;
if (string.IsNullOrEmpty(rel) || rel == "alternate") if (string.IsNullOrEmpty(rel) || rel == "alternate")
Feed.Link = node.Attributes["href"].InnerText.Trim(); Feed.Link = GetAttribute(node, "href").InnerText.Trim();
break; break;
@@ -103,14 +103,14 @@ namespace FeedCenter.FeedParsers
if (childNode.Attributes == null) if (childNode.Attributes == null)
break; break;
XmlNode relNode = childNode.Attributes["rel"]; XmlNode relNode = GetAttribute(childNode, "rel");
if (relNode != null) if (relNode != null)
rel = relNode.InnerText.Trim(); rel = relNode.InnerText.Trim();
if (string.IsNullOrEmpty(rel) || rel == "alternate") if (string.IsNullOrEmpty(rel) || rel == "alternate")
{ {
var link = childNode.Attributes["href"].InnerText; var link = GetAttribute(childNode, "href").InnerText;
if (link.StartsWith("/")) if (link.StartsWith("/"))
{ {
@@ -131,5 +131,13 @@ namespace FeedCenter.FeedParsers
return feedItem; return feedItem;
} }
private static XmlAttribute GetAttribute(XmlNode node, string attributeName)
{
if (node?.Attributes == null)
return null;
return node.Attributes[attributeName, node.NamespaceURI] ?? node.Attributes[attributeName];
}
} }
} }