2011-06-09

GAE/J で XPath を使って XML 解析

今まで使ったことがなかったのだけれど、XML を解析するのに XPath がめちゃくちゃ便利。
ブログ ID +ポスト ID で投稿のタイトルや URL を取得しようと思っていたのが、ちょっぴり挫折。URLFetch して、XML のパーサを使うか、正規表現でゴリゴリするか、迷い中…。
って前回悩んでいたのだけれど、その URLFetch で得た Blogger の個別投稿フィードを XPath で解析するコードが、ほらこの通り。
/* フィードを取得して InputStream に */
String feed = getSiteText("http://www.blogger.com/feeds/" + blogId + "/posts/summary/" + postId);
InputStream is = new ByteArrayInputStream(feed.getBytes("UTF-8"));

/* Evaluator を生成し、タイトル、サマリー、URL、公開日時を取得 */
XPathEvaluator evaluator = new XPathEvaluator(is);
String title = evaluator.getString("//title");
String summary = evaluator.getString("//summary");
String url = evaluator.getString("//link[@rel='alternate']/@href");
String published = evaluator.getString("//published");
って、非常に簡単に XML のデータを取得できる。ちなみに、getSiteText(String) は、以前に書いたこれ。

public static String getSiteText(String url, String charset) throws IOException {
    return new String(URLFetchServiceFactory.getURLFetchService().fetch(new URL(url)).getContent(), charset);
}
public static String getSiteText(String url) throws IOException {
    return getSiteText(url, "UTF-8");
}
で、一番大事な XPathEvaluator は、こちらで公開されている XPath のラッパークラス。 便利な時代になったものです。ありがたやー。
スポンサードリンク:

お願い:
「このエントリ役に立った!」と思ったら、ぜひ フィード 登録をお願いします。 

No comments:

Post a Comment

Comments on Google+:

Zenback - Everyone's Related Posts