У меня есть этот сценарий, который является частью более крупного. У меня есть древовидные XML-файлы, которые немного отличаются друг от друга, и мне нужен какой-то тип управляющей структуры для лучшей обработки выражений nil-object и xpath
Скрипт, который у меня есть прямо сейчас, выводит nil объектов:
require 'open-uri'
require 'rexml/document'
include REXML
@urls = Array.new()
@urls << "http://testnavet.skolverket.se/SusaNavExport/EmilObjectExporter?id=186956355&strId=info.uh.kau.KTADY1&EMILVersion=1.1"
@urls << "http://testnavet.skolverket.se/SusaNavExport/EmilObjectExporter?id=184594606&strId=info.uh.gu.GS5&EMILVersion=1.1"
@urls << "http://testnavet.skolverket.se/SusaNavExport/EmilObjectExporter?id=185978100&strId=info.uh.su.ARO720&EMILVersion=1.1"
@urls.each do |url|
doc = REXML::Document.new(open(url).read)
doc.elements.each("/educationInfo/extensionInfo/nya:textualDescription/nya:textualDescriptionPhrase | /ns:educationInfo/ns:extensionInfo/gu:guInfoExtensions/gu:guSubject/gu:descriptions/gu:description | //*[name()='ct:text']"){
|e| m = e.text
m.gsub!(/<.+?>/, "")
puts "Description: " + m
puts ""
}
end
ВЫВОД:
Описание: бестрыкнинг, каландреринг, трикнинг, кемитекник
Описание: Vill du jobba med internationella och globala frågor med ... Описание: Изучение глобализации становится все более важным для нашего понимания современного мира, и Школа глобальных исследований представляет собой уникальную среду для исследований.
Описание:
Описание:
Описание: Курсэн бэчендлар идентификатор и открыт для скелетной модели. Kursen ger en ämneshistorisk bakgrund och skelettförändringars förhållanden till moderna kliniska data diskuteras.
puts "Description: " + m
лучше писать какputs "Description: #{m}"
, IMO. Кроме того,puts ""
эквивалентно простоputs
. Также вы можете использовать толькоfoo = []
вместоfoo = Array.new
(подробнее см. этот вопрос тот). - person Andrew Marshall   schedule 04.03.2012