Книга: Программирование на языке Ruby

15.1.1. Древовидное представление

15.1.1. Древовидное представление

Сначала покажем, как работать с ХМL-документом, представленным в виде дерева. Для начала затребуем библиотеку rexml/document; обычно для удобства мы включаем также директиву include rexml, чтобы импортировать все необходимое в пространство имен верхнего уровня. В листинге 15.2 продемонстрировано несколько полезных приемов.

Листинг 15.2. Разбор документа с применением DOM

require 'rexml/document'
include REXML
input = File.new("books.xml")
doc = Document.new(input)
root = doc.root
puts root.attributes["shelf"] # Недавние приобретения
doc.elements.each("library/section") { |e| puts e.attributes["name"] }
# Выводится:
#  Ruby
#  Space
doc.elements.each("*/section/book") { |e| puts e.attributes["isbn"] }
# Выводится:
#  0672328844
#  0321445619
#  0684835509
#  074325631X
sec2 = root.elements[2]
author = sec2.elements[1].elements["author"].text # Robert Zubrin

Обратите внимание: атрибуты представляются в виде хэша. Обращаться к элементам можно либо по пути, либо по номеру. В последнем случае учтите, что согласно спецификации XML индексация элементов начинается с 1, а не с 0, как в Ruby.

Оглавление книги


Генерация: 1.173. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз