的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....
我需要什么,以便抢增值?
答
问题是SelectSingleNode需要XPath而不仅仅是一个节点名称。所以当你在那里放置一个冒号的时候,它假设你正在讨论一个没有提供给它的名字空间,所以它会抛出这个异常。
简单的答案,然后是要改变你的代码:
rssSubNode = rssNode.SelectSingleNode("//*[name()='itunes:author']")
这有效地让你忽略的特殊字符。如果你想正确使用命名空间,那么我建议你看看XmlNamespaceManager。
的'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