所以,我一直致力于解析从互联网 (RSS) 获取的 XML 文件。
我一直在根据可以找到的 IBM 解析器工作 here .
不幸的是,当我尝试解析如下所示的链接时:
http://www.website.net/index.php?option=com_adsmanager&page=display&catid=87&tid=208196
但我的解析器仅将链接显示为:http://www.website.net/index.php?option= ,其余链接将被切断。
关于如何解决这个问题有什么想法吗?
编辑 1:
SaxParser 甚至根本无法工作。它声称(错误地)该文件格式不正确,但我知道它不是真的,因为它已经过检查和双重检查。
编辑 2:
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 提要解析器中执行此操作的方法。现在我所要做的就是找到一种在与 IBM 示例不同的解析器中执行此操作的方法。
最佳答案
<link>http://www.website.net/index.php?option=com_adsmanager&page=display&catid=87&tid=208196</link>
...不是有效的 XML,因为 &
后面没有有效的 xml entities .
有几种方法可以解决这个问题:
转义&
:
<link>http://www.website.net/index.php?option=com_adsmanager&page=display&catid=87&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 解析器之前对其进行预处理。移动宽容的 xml 解析器,如 TagSoup可能会有帮助。
关于android XML 解析器不解析完整链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370276/