android XML 解析器不解析完整链接

标签 android xml-parsing

所以,我一直致力于解析从互联网 (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&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 解析器之前对其进行预处理。移动宽容的 xml 解析器,如 TagSoup可能会有帮助。

关于android XML 解析器不解析完整链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370276/

相关文章:

android - 迁移到 Material 设计 - 我们应该使用工具栏还是操作栏

Android FileLock...如何锁定来自不同进程的文件

java - 无法将dom文档写入xml文件

ios - iOS 中的 xml 解析显示 null

XmlPullParser - 如何跳到匹配的END_TAG?

android - 在 Android 4 中更改首选项摘要文本颜色

java - SherlockFragment 内的 SQLite 连接打开错误

android - 如何在不使用google maps api的情况下获取方向箭头

python - 解析来自网站的数据 (.xml)

android - 如何在 Android 中以 XML 格式发送 SOAP 请求和解析 SOAP 响应?