segunda-feira, 6 de abril de 2009

RSS.NET não lê a tag <enclosure />



Ao utilizarmos a lib RSS.NET para ler e escrever feeds RSS, recebemos o valor null ao ler a tag <enclosure>. Isso ocorre porque a tag enclosure não possui um valor. Possui apenas atributos, como mostramos abaixo:
<enclosure url="" type="" length="" />

Para resolver esse problema, faça o download do código fonte do RSS.Net, abra-o no Visual Studio e edite o arquivo RssReader.cs

Você deve adicionar uma condição reader.AttributeCount==0 para isso funcionar. Exemplo:

Altere a linha 165 disso:

switch (reader.NodeType)
{
case XmlNodeType.Element:
{
if (reader.IsEmptyElement)
break;


Para isso:


switch (reader.NodeType)
{
case XmlNodeType.Element:
{
if (reader.IsEmptyElement && (reader.AttributeCount==0))
break;


Recompile a biblioteca e inclua no seu projeto novamente. Espero ter ajudado.