Java SAX解析器忽略CDATA-html标记

Java SAX解析器忽略CDATA-html标记,java,html,android,rss,sax,Java,Html,Android,Rss,Sax,我有一个简单的Android RSS阅读器应用程序,其中我使用SAX解析器获取数据。除“desc”元素外,所有记录都被正确提取。XML结构如下所示 <item> <title>Boilermaker Jazz Band</title> <link>http://eventur.sis.pitt.edu/event.jsp?e_id=1805</link> <type>Music Concerts</type> &

我有一个简单的Android RSS阅读器应用程序,其中我使用SAX解析器获取数据。除“desc”元素外,所有记录都被正确提取。XML结构如下所示

<item>
<title>Boilermaker Jazz Band</title>
<link>http://eventur.sis.pitt.edu/event.jsp?e_id=1805</link>
<type>Music Concerts</type>
<s_time>09-02-2010 05:00 PM&nbsp;</s_time>
<venue>Backstage Bar at Theater Square</venue>
<venue_addr/>
<desc>
<p><span style="font-family: arial, geneva, sans-serif; font-size: 11px;">
<p style="font-family: Arial, Helvetica, sans-serif; max-width: 600px; margin-top: 8px; margin-right: 0px; margin-bottom: 8px; margin-left: 0px; font-size: 9pt; vertical-align: top;">Authentic American Jazz, Ragtime and Swing The Boilermaker Jazz Band is an ecstatically fun band performing authentic hot jazz, ragtime, and swing. The group has ....</desc>
−
<img_link>
http://eventur.sis.pitt.edu/images/Boilheadshot1.jpg
</img_link>
</item>

锅炉匠爵士乐队
http://eventur.sis.pitt.edu/event.jsp?e_id=1805
音乐会
2010年2月9日下午5:00
剧院广场的后台酒吧

正宗美国爵士乐、拉格泰姆和摇摆乐Boilermaker爵士乐队是一支非常有趣的乐队,演奏正宗的热辣爵士乐、拉格泰姆和摇摆乐。这个团体有。。。。
−
http://eventur.sis.pitt.edu/images/Boilheadshot1.jpg
所有字段中的数据都作为一个整体获取。但是当谈到
时,“characters”方法只是获取“您的
元素包含另一个(无效)XML结构
将被触发,然后是
,然后是另一个
。如果您只想提取文本,您可以将
characters()
方法为
的所有子元素返回的内容串联起来,直到您收到
元素结束的通知,并使用
endElement()

差不多

private boolean isDescStarted = false;

private StringBuilder textDesc = new StringBuilder();

public void startElement(String uri, String name, String qName, Attributes atts) {
   if(name.equals("desc") {isDescStarted = true;}
}

public void endElement(String uri, String name, String qName) {
   if(name.equals("desc") {
      isDescStarted = false;
      String fullTextDesc = textDesc.toString(); // do whatever you want with this string now
   }
}

public void characters(char[] buf, int offset, int length) {
   if (isDescStarted) {
      textDesc.append(new String(buf, offset, length));
   }
}

您好Damien,我知道您刚才说了什么。但我不知道如何使用characters()和endElement()作为标记。请您详细说明。非常感谢您。@Abdul我编辑了我的答案,添加了代码片段。希望对您有所帮助。