Тест для корневого узла XML .NET - PullRequest
0 голосов
/ 10 августа 2009

В настоящее время я использую приведенный ниже код, чтобы попытаться проверить наличие определенного корневого узла (rss) и определенного пространства имен \ префикса (itunes), но, похоже, говорится, что фид действителен даже при наличии случайного URL веб-страницы вместо одного, указывающего на канал.

FeedState state = FeedState.Invalid;

XmlDocument xDoc = new XmlDocument();
xDoc.Load(_url);

XmlNode root = xDoc.FirstChild;
if (root.Name.ToLower() == "rss" && root.GetNamespaceOfPrefix("itunes") == "http://www.itunes.com/dtds/podcast-1.0.dtd")
{
    state = FeedState.Valid;
}

return state;

Кто-нибудь может сказать мне, почему это может быть?

1 Ответ

0 голосов
/ 11 августа 2009

Нашел решение сейчас. Положить xDoc.Load (_url); в блоке try .. catch и возврате FeedState.Invalid после исключения, кажется, решил мои проблемы.

FeedState state = FeedState.Invalid;

XmlDocument xDoc = new XmlDocument();

try
{
    xDoc.Load(_url);
}
catch
{
    return state;
}

XmlNode root = xDoc.FirstChild;
if (root.Name.ToLower() == "rss" && root.GetNamespaceOfPrefix("itunes") == "http://www.itunes.com/dtds/podcast-1.0.dtd")
{
    state = FeedState.Valid;
}

return state;
...