今まで使ったことがなかったのだけれど、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