初めての Rss リーダーを作成しようとしていますが、問題があります。メソッドがフィード リストを返すクラスがあります。
public ArrayList<FeedsItem> getFeedList()
{
final FeedsItem fi = new FeedsItem(Const.appDebugMode);
final ArrayList<FeedsItem> fl = new ArrayList<FeedsItem>();
/**
* xml parse elements
*/
RootElement root = new RootElement("rss");
Element channel = root.getChild("channel");
Element item = channel.getChild("item");
item.setEndElementListener(new EndElementListener()
{
@Override
public void end()
{
fl.add(fi.getCopy());
}
});
item.getChild("title").setEndTextElementListener(new EndTextElementListener()
{
@Override
public void end(String body)
{
fi.setTitle(body);
}
});
item.getChild("link").setEndTextElementListener(new EndTextElementListener()
{
@Override
public void end(String body)
{
fi.setLink(body);
}
});
item.getChild("description").setEndTextElementListener(new EndTextElementListener()
{
@Override
public void end(String body)
{
fi.setDescr(body);
}
});
item.getChild("pubDate").setEndTextElementListener(new EndTextElementListener()
{
@Override
public void end(String body)
{
fi.setPubDate(body);
}
});
item.getChild("guid").setEndTextElementListener(new EndTextElementListener()
{
@Override
public void end(String body)
{
fi.setGuid(body);
}
});
/**
* парсим feed
*/
try
{
Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler());
} catch (Exception e)
{
new FeedsParserWriteLog(Const.appDebugMode)
.WriteLog("FeedsParcer getFeed (parse xml) err= \n"+e.getLocalizedMessage());
throw new RuntimeException(e);
}
return fl;
}
ファイル形式rss 2.0を処理すると-すべてが機能します(このリンクhttp://news.yandex.ru/software.rssのように)ファイル形式アトムを処理すると(このリンクhttp://ithappens.ru/rss/のように) )-問題の エラーがあります: 行 xxx 列 xxx: 整形式ではありません (無効なトークン)
どうすれば両方のフォーマットを処理できますか? 2 つの形式を処理するようにメソッドを書き直すにはどうすればよいですか?
どうも