2010-03-16 42 views
0

有人可以帮我用一行代码从RSS提要访问iCal节点吗?如何解析iCal Rss节点

具体而言,我想访问xCal:x-calconnect-venue-name节点。

我的父节点是 '项目',因此该路径是:

项/ xCal:X-calconnect会场/ xCal:ADR/xCal:X-calconnect会场名

哪有我使用parent.SelectChildNode()来访问该节点的值?

非常感谢

b

+0

而'SelectChildNode()'是什么语言的一部分?请包含一些代码作为上下文,并显示您一直在尝试的内容。 – Tomalak 2010-03-16 13:15:08

+0

好点Tomalak,它来自asp.net C# – 2010-03-16 14:42:52

+0

据我所知在整个.NET框架中没有'SelectChildNode()'函数。对于Bing的知识:http://social.msdn.microsoft.com/Search/en-US?query=SelectChildNode&ac=3所以 - 你在做什么? – Tomalak 2010-03-16 14:46:53

回答

0

如果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; 
    // ... 
} 
+0

太棒了,谢谢Tomalak,我会试试! – 2010-03-16 21:55:01

+1

只是为了跟进,再次感谢Tomalak这工作完美。非常感激。 – 2010-03-17 18:20:46

+0

@user:感谢后续,很高兴它的工作。 P.S .:对于这个答案的赞成票和接受将在我的结尾非常赞赏。 ;-) – Tomalak 2010-03-17 19:00:26