我一直在试图找到关于如何进行的足够具体的例子。我正在创建用于导出/导入使用的生成器xml文件。我从应用程序导出这个文件,当导入我要创建新的记录,基于此xml文件的数据库。模型之间的关系完整
我有一个有几个问题的类别,每个问题有几个答案,这些答案可能会引发一个或多个进一步的问题。
我做了简化版本的xml文件:https://gist.github.com/1225431
当我自己做这件事时,我也愿意听取建议,如果我应该以不同的方式准备xml文件。
questions = doc.css('questions')
这是我现在的位置,所以在开始的地方。我找到的所有例子都是针对完全不同类型的问题(至少我觉得是这样)。
我用的工具对吗?
Nokogiri是一个很棒的Ruby XML/HTML解析库,所以您肯定是在使用正确的工具。因为要解析XML文档,所以应该使用XPath而不是CSS选择器。幸运的是,Nokogiri已经覆盖了你。
Nokogiri文档有一些基本的、有用的使用教程。
以下是针对您的问题的代码示例。希望这足以让你开始:
require 'nokogiri'
# Reads the `example.xml` file from the current directory.
file = File.read("example.xml")
# Uses Nokogiri::XML to parse the file.
doc = Nokogiri::XML(file)
# Iterate over each <question> element and print
# the text inside the first <name> element of each.
doc.xpath("//question").each do |q|
puts q.at("name").text
# Iterate over each <selection> element within the
# current question and print its <name> and <conditional>
# line "name: conditional"
q.xpath("./selection").each do |selection|
puts "#{selection.at("name").text}: #{selection.at("conditional").text}"
end
# Same as above, but use variables.
q.xpath("./selection").each do |selection|
name = selection.at("name").text
conditional = selection.at("conditional").text
puts "#{name}: #{conditional}"
end
end