1

嘿,我正在阅读我的 XML RSS 提要,如下所示:

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....

为了获得该价值,我需要添加什么?

4

1 回答 1

0

问题是 SelectSingleNode 采用 XPath 而不仅仅是节点名称。因此,当您将带有冒号的内容放在那里时,它假定您正在谈论一个未提供给它的名称空间,因此它会引发该异常。

那么简单的答案是将您的代码更改为:

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

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

于 2013-04-08T00:29:05.047 回答