【发布时间】:2010-12-22 17:39:06
【问题描述】:
我正在为特定的 RSS 提要开发 RSS 提要阅读器,但我遇到了 SAX 和标签的问题。标签看起来像这样
<description>
<![CDATA[<img src=http://www.lamaruniversitypress.com/polopoly_fs/1.1832584!image/2678128836.jpg_gen/thumbnails/100x100/2678128836.jpg><br /><br><p>
South Korea vowed Wednesday to completely punish North Korea if it attacks again.
...</p>]]>
</description>
我的 startElement 方法有这个元素来处理描述标签,如下所示:
if (localName.equals("description"))
{
currentstate = RSS_DESCRIPTION;
return;
}
我的 chars 方法如下所示:
case RSS_DESCRIPTION:
_item.setDescription(theString);
Log.i("DESCRIPTION","characters[" + theString + "]");
currentstate = 0;
break;
日志文件显示如下:
12-22 11:21:06.517: INFO/TITLE(489): characters[SKorea holds massive new drills after North attack]
12-22 11:21:06.527: INFO/DESCRIPTION(489): characters[
12-22 11:21:06.527: INFO/DESCRIPTION(489): ]
这是我第一次尝试使用 SAX,而且我已经非常接近用不同的解析器重写整个东西了,问你们是我最后的努力。
我尝试过处理段落标签,但它不起作用,大概是因为它位于 CDATA 内部。我试图对这样的描述进行子串化
String theString = new String(ch,start,length);
/*
if ( currentstate == RSS_DESCRIPTION){
theString = new String(ch, theString.indexOf("<p>") + 3, theString.indexOf("</p>"));
}
当它碰到它时程序就会停止。
提前感谢您的帮助!!! -大卫
【问题讨论】:
-
我刚刚粘贴的子字符串代码与我实际运行的代码混淆了,我实际上创建了一个新字符串 thisString 并将其传递给 theString 而不是 ch...
-
我认为我不相信 Log Cat 转储。解析器真的将“South Korea...”更改为“SKorea...”还是 XML 中的内容更多?
-
@Brandon:为什么不打开实际的 XML 文档,看看它的结构?这可能有助于你理解。看起来好像“title”元素包含 SKorea,而不是描述。
-
是的,我完全失明了。没有看到信息/标题。实际的 XML 文档在哪里?
-
这是正确的,标题标签与描述标签不同,我记录了两者,因此我可以参考应该存在的描述。