的iTunes RSS读取XML饲料

问题描述:

嘿所有我读我的XML RSS提要,像这样:的iTunes RSS读取XML饲料

Dim rssSubNode As XmlNode = rssNode.SelectSingleNode("title") 
Dim title As String = If(rssSubNode IsNot Nothing, rssSubNode.InnerText, "") 

rssSubNode = rssNode.SelectSingleNode("itunes:author") 
Dim author As String = If(rssSubNode IsNot Nothing, rssSubNode.InnerText, "") 

标题检索就好了。然而,当它试图对得到它的一个错误作者:

Value of type 'System.Xml.XmlNodeList' cannot be converted to 'System.Xml.XmlNode'. 

我的XML文件是这样的:

<?xml version="1.0" encoding="UTF-8"?> 
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"> 
    <channel> 
     <item> 
     <title>First Chaper</title> 
     <itunes:author>My Name Here</itunes:author> 
     <itunes:subtitle>First Chapter: The blah blah.</itunes:subtitle> 
     etc etc.... 

我需要什么,以便抢增值?

+1

的'itunes'部分是一个命名空间前缀(见'的xmlns:itunes的=“...”'),所以我认为你必须为了添加的XmlNamespaceManager的选择才能够分析和解决命名空间前缀。参见['XmlNode.SelectSingleNode'](http://msdn.microsoft.com/en-gb/library/h0hw012b.aspx)。我没有写这个答案,因为我没有使用vb.net,所以不能真正提供任何有用的代码 - 但是我在之前遇到过XML命名空间问题:-) – andyb 2013-04-05 16:00:06

问题是SelectSingleNode需要XPath而不仅仅是一个节点名称。所以当你在那里放置一个冒号的时候,它假设你正在讨论一个没有提供给它的名字空间,所以它会抛出这个异常。

简单的答案,然后是要改变你的代码:

rssSubNode = rssNode.SelectSingleNode("//*[name()='itunes:author']") 

这有效地让你忽略的特殊字符。如果你想正确使用命名空间,那么我建议你看看XmlNamespaceManager