Читайте Atom Feed по XPATH в.NET

Проблема в том, что код не может прочитать XML-формат фида Atom, как этот URL.

Я понятия не имею, что не так в коде, но код не имеет никаких проблем с версией RSS 2.0, и все хорошо

Существует простой код на C#, который я использовал для чтения RSS-канала и атома.

если есть какое-либо решение, я буду признателен

XmlDocumentxmlDoc=newXmlDocument();
xmlDoc.Load("http://wintermute.com.au/bits.atom");
XmlNodeListitemNodes=xmlDoc.SelectNodes("//feed/entry");
foreach(XmlNodeitemNodeinitemNodes)
{
  //TitleTag
  if(itemNode.SelectSingleNode("title")!=null)
  {
    titletag=itemNode.SelectSingleNode("title").InnerText;
  }
  else
  {
    titletag="Notitlefound";
  }
  //PubDateTag
  if(itemNode.SelectSingleNode("published")!=null)
  {
    pubDatetag=itemNode.SelectSingleNode("published").InnerText;
  }
  else
  {
    pubDatetag="Nopublishedfound";
  }
  //LinkTag
  if(itemNode.SelectSingleNode("link")!=null)
  {
    linktag=itemNode.SelectSingleNode("link").InnerText;
  }
  else
  {
    linktag="NopubDatefound";
  }
  //Logo,Image
  if(itemNode.SelectSingleNode("logo")!=null)
  {
    imgtag=itemNode.SelectSingleNode("logo").InnerText;
  }
  if(itemNode.SelectSingleNode("image")!=null)
  {
    imgtag=itemNode.SelectSingleNode("image").InnerText;
  }
  else
  {
    imgtag="NoImagefound";
  }
  //summaryTag
  if(itemNode.SelectSingleNode("summary")!=null)
  {
    destag=itemNode.SelectSingleNode("summary").InnerText;
  }
  else
  {
    destag="Nosummaryfound";
  }
}

1 ответ

Решение

feed Тег находится в пространстве имен и определяет пространство имен по умолчанию для документа. Вам нужно настроить NameSpaceManager и использовать его в SelectSingleNode(),

Что-то вроде

var doc = new XmlDocument();
doc.Load(source);
var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("f", "http://www.w3.org/2005/Atom");
var something= doc.SelectSingleNode("//f:feed/f:entry", nsmgr);

Проблема в том, что в фиде указан неверный XML. Встроенный IFrame в строке 188 (на момент написания) использует синтаксис HTML, который недопустим в XML.

<iframe [...] allowfullscreen></iframe>

В XML не может быть атрибута allowfullscreen без значения. ИМХО сайт должен использовать <![CDATA[...]]> вставить HTML.

Другие вопросы по тегам