Berikut ini adalah contoh penggunaan Nokogiri untuk melakukan parsing XML dimana diasumsikan memiliki dokumen xml foods.xml yang terletak di direktori yang sama.
#!/usr/bin/ruby
require 'rubygems'
require 'nokogiri'
xml = Nokogiri::XML.parse(File.read('foods.xml'))
# menampilkan value dari tag xml bernama 'color'
colors = xml.search("//color").collect(&:text)
i = 1
colors.each do |color|
puts "color-#{i}: #{color}"
i = i + 1
end
# menampilkan value dari tag xml bernama 'name' dimana tag xml bernama 'color' memiliki value 'yellow'
names = xml.search("//color[text()='yellow']/ancestor::node()/name").collect(&:text)
i = 1
names.each do |name|
puts "Name-#{i}: #{name}"
i = i + 1
end
# menampilkan seluruh value dari tag xml bernama 'tag' dimana tag xml bernama 'name' memiliki value 'apple'
all_tags = xml.search("//name[text()='apple']/../tags/tag").collect(&:text)
i = 1
all_tags.each do |tag|
puts "tag-#{i}: #{tag}"
i = i + 1
end
# menampilkan value 'baked' dari tag xml bernama tag dimana tag xml bernama name memiliki value 'apple'
tag = xml.search("//name[text()='apple']/../tags/tag[text()='baked']").collect(&:text)
puts "tag: #{tag}"
Untuk yang ingin lebih detail tentang parsing XML dengan Nokogiri, sangat disarankan membaca artikel blog yang dibuat oleh Nicholas.
Sedangkan berikut ini adalah contoh penggunaan Nokogiri untuk melakukan parsing dokumen HTML yang dihasilkan saat melakukan pencarian dengan kata kunci 'rails' pada google.com.
#!/usr/bin/ruby
require 'rubygems'
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open('http://www.google.com/search?q=rails'))
# menampilkan 'title' dan dari halaman google.com ketika mencari keyword 'rails'
doc.css('h3.r a.l').each do |link|
puts "#{link.content} - #{link[:href]}"
end
Instalasi
gem install nokogiri
0 comments:
Post a Comment