Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 Ruby Cookbook | Navigating a Document with XPath

パンくず

Ruby Cookbook
Navigating a Document with XPath

概要

Navigating a Document with XPath

内容

XPathでのデータ取得について。

サンプルコード

# encoding: utf-8
require_relative "../open_classes.rb"
require 'rexml/document'

xml = %{
  <languages>
    <language name="java">
      <name>Java</name>
      <type>Compile</type>
    </language>
    <language name="ruby">
      <name>Ruby</name>
      <type>Script</type>
    </language>
  </languages>
 }

languages = REXML::Document.new xml
print_eval "REXML::XPath.first(languages, '//name')", binding
print_eval "REXML::XPath.match(languages, '//name')", binding
print_eval "REXML::XPath.match(languages, '//[@name=\"java\"]]')", binding

# eachで個別処理可能
REXML::XPath.match(languages, '//name').each {|language|puts "language name=#{language}"}

出力

(REXML::XPath.first(languages, '//name')) => <name>Java</name>
(REXML::XPath.match(languages, '//name')) => <name>Java</name>
<name>Ruby</name>
(REXML::XPath.match(languages, '//[@name="java"]]')) => <language name='java'>
      <name>Java</name>
      <type>Compile</type>
    </language>
language name=<name>Java</name>
language name=<name>Ruby</name>