2013-04-05 60 views
1

嘿所有我讀我的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

回答

0

問題是SelectSingleNode需要XPath而不僅僅是一個節點名稱。所以當你在那裏放置一個冒號的時候,它假設你正在討論一個沒有提供給它的名字空間,所以它會拋出這個異常。

簡單的答案,然後是要改變你的代碼:

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

這有效地讓你忽略的特殊字符。如果你想正確使用命名空間,那麼我建議你看看XmlNamespaceManager