Step1 XML解析
それでは、取得したXMLから記事のタイトルを取り出してその内容を表示してみましょう。
前回の内容で、すでにXMLファイルの取得までできているので、今回はそのXMLを解析するメソッドを作成します。
プログラムの流れは、最初にXMLを読み込んで取得した記事の数を調べ、次にその数に応じて記事のタイトルを格納するString型の配列を確保し、順次記事のタイトルを取得していくというものになります。
実は第3回で取得したXMLファイルの内容は上図のようになっています。図を見てもらえれば分かるように、XMLファイルでは各要素がタグによって表現されています。取得できた記事の個数を得るためにはResultSetタグのTotalResultsReturnedの値を、記事のタイトルの取得するにはTitleタグの値を取得します。
それではプログラムを見ていきましょう。
はじめに、クラスのメンバ変数として取得できた記事の数と記事のタイトルを保持する変数を作成します。
static private String mArticleTitle[]; static private int mArticleNum; |
次に,XMLファイルの解析を行い、記事の個数とタイトルを取得するメソッドreadXMLを作成します。
解析にはXmlPullParserクラスを使用します。このクラスを使うことでタグの内容を容易に取り出すことが出来ます。
public static void readXML(InputStream stream) int cntTitle = 0; } } |
(1)XmlPullParserの用意
XmlPullParserのオブジェクトを取得し、
setInputの引数に第一引数に解析したいストリーム、第二引数にその文字コードを指定します。
(2)取得した記事の個数の取得
if (e ==XmlPullParser.START_TAG)によって読み込んだ内容がタグであるかを確認します。
myxmlPullParser.getName().equals("ResultSet")によってタグの内容がResultSetであるか確認します。
さらにmyxmlPullParser.getAttributeValu(null, "totalResultsReturned");では第一引数に名前空間(今回は使用しない)、第二引数に記事の属性を指定し、内容を取得します。
(3)記事のタイトルの取得
myxmlPullParser.getName().equals("Title")によってタグの内容がTitleであることを確認し、myxmlPullParser.nextText();で内容を取得します。
作成したreadXMLはhttpGet内で呼び出すようにします。引数としてURLクラスから取得したstreamを渡します。
今回はhttpGetの戻り値を、全てのタイトルを結合した変数dataに変更します。
public static String httpGet(String strURL) { connection.setDoInput(true); String data = ""; stream.close(); |
実行結果は以下のようになります。これでXMLファイルの解析を行い、必要な要素を取り出すことが出来ました。
しかしこれでは文字列を表示しただけでアプリケーションになっているとは言えません。
次のステップではListViewを使って表示をまとめてみましょう。
第4回 通信するアプリを作ってみよう(後編)
Step1 XML解析
Step2 ListViewによる記事の表示
Step3 ボタンの配置とブラウザ呼び出し