嘿所有我正在阅读我的XML RSS feed:
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....
我需要添加什么来获取该值?
答案 0 :(得分:0)
问题是SelectSingleNode采用XPath而不仅仅是节点名称。所以当你在那里放一个带冒号的东西时,它假定你在谈论一个没有提供给它的命名空间,所以它抛出了那个异常。
然后简单的答案是将您的代码更改为:
rssSubNode = rssNode.SelectSingleNode("//*[name()='itunes:author']")
这有效地允许您忽略特殊字符。如果您想正确使用名称空间,那么我建议您查看XmlNamespaceManager。