[xml]Nokogiri (鋸)を利用してxmlを簡単にparseしてみる

2012.04.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Nokogiri (鋸)を利用することでxmlを簡単にparseすることができます。

まずは、インストールしてみましょう。

必要な環境はまず ruby ですが、インストール済みの想定で進めます。

$ gem install nokogiri
Fetching: nokogiri-1.5.2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.5.2
1 gem installed
Installing ri documentation for nokogiri-1.5.2...
Installing RDoc documentation for nokogiri-1.5.2...
$ gem list

*** LOCAL GEMS ***

nokogiri (1.5.2)
rake (0.9.2)

上記のような表示ができれば環境準備は完了です。

では、さっそく試してみましょう。

今回はサンプルとして、dev.classmethod.jp のフィードを利用してみます。

# -*- encoding: UTF-8 -*-
require 'nokogiri'
require 'open-uri'

url = 'https://dev.classmethod.jp/feed/'

xml = Nokogiri::XML(open(url).read)

item_nodes = xml.xpath('//item')

item_nodes.each do |item|
  puts "ブログタイトル:" + item.xpath('title').text
  puts "執筆者:" + item.xpath('dc:creator').text
  puts "説明:" + item.xpath('description').text
end

それでは実行します。

$ ruby dev_classmethod_nokogiri.rb > blog.txt

テキストに出力してみたので、ファイルの中身を見てみましょう。

$ vim blog.txt ブログタイトル:Spine.js をはじめよう(2) [簡単なサンプル] 執筆者:深澤 豪 説明:こんにちわ。深澤です。 今回はボタンを押したらJSONデータを取得してページの内容を書き換える簡単でAjaxなサンプルからSpineを知っていこうと思います。SpineにはContactsやTodos等のサンプルアプリもありますが、わりと量が多く、理解するのに自分も時間がかかったため、簡単なところから始めてみます。 動作するサンプル まずは動くものを見てください。ボタンを押すと通信してHTMLを書... ブログタイトル:iCalSyncをアップデートしました 執筆者:小室 啓 説明:はじめまして、年度末にかけこみで入社したこむろです。 (主に)Androidについて自分が学んだことやTipsやアプリケーションのアップデート情報などを発信していければ良いな、と思っています。よろしくお願いします さて、さっそくAndroidアプリケーションのアップデートについてのお知らせです。ical形式のカレンダーをAndroidの標準カレンダーにインポートするツール「iCalSync」のアッ... ブログタイトル:javascriptのテストのはなし:Sinon.JS(その2) 執筆者:ともだつばさ 説明:前回に引き続いてSinon.JSの話しです。今回はFake timer と Fake server についてです。テストフレームワークにはQunitを使っているので、初めての方はQUnitについての記事[その1、その2、その3]を参照してください。 Fake timer Fake timerを使うと時間をコントロール出来る様になります。APIドキュメントにある例を少し変えて、次の様なテストを作りま... ブログタイトル:javascriptのテストのはなし:Sinon.JS(その1) 執筆者:ともだつばさ 説明:QUnitについてある程度分かった所で、今回はSinon.JSというライブラリを紹介します。Sinon.JSをテストフレームワークと合わせて使う事で様々なテストができる様になります。特定のテストフレームワークには依存していないのでQUnit以外でも使えます。Sinon.JSのサイトに行けばいくつかのテストフレームワークのアダプタがあります。 Sinon.JSにはいくつかの機能があるので順に紹介しま... ブログタイトル:javascriptのテストのはなし:QUnit(その3) 執筆者:ともだつばさ 説明:今回は非同期テストについてです。(前回[その2]と前々回[その1]の記事も合わせどうぞ)QUnitでは非同期のテストが可能になっています。基本的には非同期通信してそのコールバックでテストを実行するという感じですが、用意されているメソッドstart、stop(と、asyncTest)を使ってレスポンスが返ってくるのを待つ事が出来ます。 ■各メソッドの役割 メソッド 説明 stop(increment... ブログタイトル:漫画から学ぶ「チーム&リーダー」~HUNTER×HUNTER編~ 執筆者:おおはしりきたけ 説明:こんにちは!おおはしりきたけです! 前回は、ROOKIESを参考に「チーム&リーダー」「コーチング」という記事を書かせていただきました。今回は、ワンピースと並ぶ大人気漫画「HUNTER×HUNTER」と「ゲーミフィケーション」について書かせていただきたいと思います。 ■HUNTER×HUNTERとは HUNTER×HUNTER(ハンターハンター)は、1998年から現在まで週刊少年ジャンプで連載され... ブログタイトル:javascriptのテストのはなし:QUnit(その2) 執筆者:ともだつばさ 説明:こんにちは。ともだです。引き続きQUnitです。前回はとりあえずテストの書き方について書きましたが、module()について書くのを忘れていたので今回はmodule()についてです。 module()を使うとテストをまとめる事が出来るのですが、そのまとまりに対してsetupとteardownを定義する事が出来ます。使い方は次の様な感じです。module()を実行したらその次にmodule()が実行... ブログタイトル:AWS Summit 2012 | NYC 参加します 執筆者:横田 あかり 説明:AWS Summit 2012 | NYC 4月19日、ニューヨーク州マンハッタンにてAWS Summit 2012が開催されます。1日のみのイベントではありますが、朝から晩までAWSの最新情報に浸かる事ができます。日本でも開催予定ですが、本場の雰囲気を味わい、1日でも早くノウハウを仕入れたいため参加することにしました。 セッションスケジュール 私が参加する予定のセッションは以下です。CTOのキー... ブログタイトル:JAWS SUMMIT 2012 セッション担当しました 執筆者:横田 あかり 説明:JAWS SUMMIT 2012 JAWS(AWS User Group – Japan)のイベントにてセッションを担当しましたので資料を共有します。 ベストプラクティス:RIAとクラウド 私の担当は、RIA(リッチインターネットアプリケーション)とクラウドというテーマで、ユーザインタフェース側へ安定的に良いレスポンスを返すためのクラウド側の設計についてご紹介しました。 まとめ CDP... ブログタイトル:真偽値 – Dart逆引きリファレンス 執筆者:稲毛 透 説明:<<Prev Next>> <Index> 真偽値(Booleans) 条件による処理の分岐をしたい IF文を使用します。書式はJavaScript等と同様のものとなります。 num number = 0; if (0 < number) { print('Positive'); } else if (number < 0) { print('Negative'... [/text]

ちょっと読みにくいですが、簡単ですね!

Nokogiriを利用するとxmlだけではなく、htmlもparseできますので、色々便利な利用が可能です。

ぜひ試してみてください。

今回のサンプルはこちらから取得できます。

classmethod-blog-sample