AndroidアプリケーションでSAXパーサーを使用して、一度にいくつかのフィードを読み取ります。スクリプトは次のように実行されます。
// Begin FeedLezer
try {
/** Handling XML **/
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Send URL to parse XML Tags **/
URL sourceUrl = new URL(
BronFeeds[i]);
/** Create handler to handle XML Tags ( extends DefaultHandler ) **/
Feed_XMLHandler myXMLHandler = new Feed_XMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
sitesList = Feed_XMLHandler.sitesList;
String titels = sitesList.getMergedTitles();
そして、ここにFeed_XMLHandler.javaとFeed_XMLList.javaがあります。これらは、基本的に両方ともWebから取得したものです。
ただし、このコードは失敗することがあります。いくつか例を示します。
http://imm.io/media/2I/2IAs.jpg ここでは非常にうまくいきます。アポストロフィも認識して表示します。開いている記事をクリックしても、ほとんどすべてのテキストが表示されるので、それはすべて良いことです。ソースフィードはこちらです。フィードを制御できません。
http://imm.io/media/2I/2IB1.jpgここでは、うまくいきません。ïは表示されますが、アポストロフィで窒息します(Waaromの後に「NORAD」があるはずです)。ここ
http://imm.io/media/2I/2IBQ.jpgこれは最悪です。ご覧のとおり、タイトルにはアポストロフィのみが表示されていますが、「blablabla」であると想定されています。また、テキストは行の途中で終わり、引用符には特殊文字は含まれていません。フィードはこちら
いずれの場合も、フィードを制御することはできません。スクリプトは特殊文字を窒息させると思います。SAXがすべての文字列を正しくフェッチするようにするにはどうすればよいですか?
誰かがこれに対する答えを知っているなら、あなたは本当に私をたくさん助けてくれます:D
前もって感謝します。