【发布时间】:2012-03-03 22:12:06
【问题描述】:
我有这个脚本,它是一个更大的脚本的一部分。我有树不同的 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
输出:
描述:bestrykning、kalandrering、tryckning、kemiteknik
描述:Vill du jobba med internationella och globala frågor med... 描述:对全球化的研究越来越多 对我们了解当今世界和学校很重要 全球研究是一个独特的研究环境。
说明:
说明:
描述: Kursen behandlar identifieringen och beskrivningen av sjukliga förändringar 我 mänskliga 骷髅。库森格恩 ämneshistorisk bakgrund och skelettförändringars förhållanden till 现代诊所数据磁盘。
【问题讨论】:
-
提示:
puts "Description: " + m最好写成puts "Description: #{m}",IMO。此外,puts ""仅相当于puts。您也可以只使用foo = []而不是foo = Array.new(有关更多信息,请参阅this question)。