Как разобрать узел iCal Rss - PullRequest
0 голосов
/ 16 марта 2010

Может ли кто-нибудь помочь мне с помощью строки кода для доступа к узлу iCal из RSS-канала?

В частности, я хочу получить доступ к узлу xCal: x-calconnect-venue-name.

Моим родительским узлом является 'item', поэтому путь:

/ XCAL х-calconnect-место:: адр / XCAL:

Пункт / XCAL х-calconnect-Место-имя

Как я могу использовать parent.SelectChildNode () для доступа к значению этого узла?

Большое спасибо

б

1 Ответ

0 голосов
/ 16 марта 2010

Если содержимое элемента RSS выглядит примерно так (нерелевантные узлы опущены)

<item>
  <xCal:adr>
    <xCal:x-calconnect-venue-name>venue name</xCal:x-calconnect-venue-name>
  </xCal:adr>
</item>

Тогда вы могли бы сделать

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.xmlDoc);
nsmgr.AddNamespace("xCal", "urn:ietf:params:xml:ns:xcal");
// possibly add the RSS namespace as well?

XmlNodeList nodes = xmlDoc.SelectNodes("rss/channel/item"); 
foreach (XmlNode node in nodes) { 
  XmlNode venue = node.SelectSingleNode(".//xCal:x-calconnect-venue-name", nsmgr);
  // watch out, there might not be a select result!
  if (venue != null) {
    string s = venue.InnerText;
    // ...
  }
}  

или напрямую

string xpath = "rss/channel/item//xCal:x-calconnect-venue-name";
XmlNodeList nodes = xmlDoc.SelectNodes(xpath, nsmgr); 
foreach (XmlNode venue in nodes) { 
  string s = venue.InnerText;
  // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...