1
4

2 回答 2

1
<link>http://www.website.net/index.php?option=com_adsmanager&page=display&catid‌​=87&tid=208196</link> 

...不是有效的 XML,因为&s 后面没有有效的xml 实体

有几种方法可以解决这个问题:

转义&s

<link>http://www.website.net/index.php?option=com_adsmanager&amp;page=display&amp;catid‌​=87&amp;tid=208196</link> 

link将部分包装在CDATA中

<link><![CDATA[http://www.website.net/index.php?option=com_adsmanager&page=display&catid‌​=87&tid=208196]]></link> 

如果您无法控制 RSS 文件的创建,则必须在将文档提供给 XML 解析器之前对其进行预处理。移动像TagSoup这样的宽容 xml 解析器 可能会有所帮助。

于 2012-04-29T13:45:37.950 回答
0

出色地。我解决了这个问题。

我的第二次更新是正确看待问题。NodeList有多个子节点,并且每个 & 符号 (&) 创建了一个新节点。

因此,我的代码:

if (name.equalsIgnoreCase(LINK)) {
    val = property.getFirstChild().getNodeValue();
    message.setLink(val);
}

不好。因此,我将其修复为以下代码:

if (name.equalsIgnoreCase(LINK)) {
    val = "";
    NodeList list = property.getChildNodes();
    for (int i = 0; i < list.getLength(); i++) {
        val += list.get(i).getNodeValue().toString();
    }
    message.setLink(val);
}

这是在 DOM XML 提要解析器中执行此操作的方法

于 2012-04-29T15:05:39.033 回答