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)
break;
XmlNode relNode = node.Attributes["rel"];
XmlNode relNode = GetAttribute(node, "rel");
if (relNode != null)
rel = relNode.InnerText;
if (string.IsNullOrEmpty(rel) || rel == "alternate")
Feed.Link = node.Attributes["href"].InnerText.Trim();
Feed.Link = GetAttribute(node, "href").InnerText.Trim();
break;
@@ -103,14 +103,14 @@ namespace FeedCenter.FeedParsers
if (childNode.Attributes == null)
break;
XmlNode relNode = childNode.Attributes["rel"];
XmlNode relNode = GetAttribute(childNode, "rel");
if (relNode != null)
rel = relNode.InnerText.Trim();
if (string.IsNullOrEmpty(rel) || rel == "alternate")
{
var link = childNode.Attributes["href"].InnerText;
var link = GetAttribute(childNode, "href").InnerText;
if (link.StartsWith("/"))
{
@@ -131,5 +131,13 @@ namespace FeedCenter.FeedParsers
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];
}
}
}