このような RSS ニュース フィードからデータを解析しようとしています。アイテムのタイトル、リンク、説明、および pubDate を解析しています。現在、Logcat の出力からわかるように、すべてが空の文字列に解析されます。 CDATA.どうすれば修正できますか?
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title></title>
<link></link>
<description></description>
<item>
<title><![CDATA[The news headline is here ]]></title>
<link></link><!--No CDATA here-->
<description><![CDATA[News description here]]>
</description>
<pubDate><![CDATA[Sat, 14 Sep 2013 10:13:08 +0530]]></pubDate>
</item>
...
</channel>
私のハンドラーは次のようになります。
public class OtherHandler extends DefaultHandler
{
Item item;
ArrayList<Item> channel;
StringBuffer sb;
boolean isItemOn=false;
OtherHandler()
{
super();
sb=new StringBuffer();
}
public void startElement(String uri,String localName,String qName,Attributes attrs) throws SAXException
{
String name=localName;
if("".equals(name))
name=qName;
if(qName.equals("channel"))
{
channel=new ArrayList<Item>();
}
if(qName.equals("item"))
{
isItemOn=true;
item=new Item();
}
}
public void charecters(char[]ch,int offset,int length) throws SAXException
{
sb.append(new String(ch,offset,length));
}
public void endElement(String uri,String localName,String qName) throws SAXException
{
String name=localName;
if("".equals(localName))
name=qName;
if(name.equals("item"))
{
isItemOn=false;
channel.add(item);
}
if(name.equals("title"))
{
if(isItemOn)
{
String title=sb.toString();
item.setTitle(title);
Log.d("OtherHandler", "Item Title :"+title);
}
}
if(name.equals("link"))
{
if(isItemOn)
{
String link=sb.toString();
item.setLink(link);
Log.d("OtherHandler","Item Link :"+link);
}
}
if(name.equals("description"))
{
if(isItemOn)
{
String desc=sb.toString();
item.setDescription(desc);
Log.d("OtherHandler","Item description: "+desc);
}
}
if(name.equals("pubDate"))
{
String pubDate=sb.toString();
item.setPublishedDate(pubDate);
Log.d("OtherHandler","Item pub date: "+pubDate);
}
}
}