在ruby中写入XML

时间:2009-08-07 11:29:10

标签: xml ruby file

我是Ruby的新手。我想要的只是生成一个简单的XML文件。

<?xml version="1.0" encoding="ASCII"?>
<product>
   <name>Test</name>
</product>

就是这样。

4 个答案:

答案 0 :(得分:65)

构建器可能应该是您的第一个停止点:

require 'builder'

def product_xml
  xml = Builder::XmlMarkup.new( :indent => 2 )
  xml.instruct! :xml, :encoding => "ASCII"
  xml.product do |p|
    p.name "Test"
  end
end

puts product_xml

产生这个:

<?xml version="1.0" encoding="ASCII"?>
<product>
  <name>Test</name>
</product>

看起来对我来说是正确的。

一些构建器引用:

答案 1 :(得分:15)

简单地说 Nokogiri::XML::Builder

require 'nokogiri'

builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
  xml.root {
    xml.products {
      xml.widget {
        xml.id_ "10"
        xml.name "Awesome widget"
      }
    }
  }
end
puts builder.to_xml

将输出:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <products>
    <widget>
      <id>10</id>
      <name>Awesome widget</name>
    </widget>
  </products>
</root>

答案 2 :(得分:8)

您可以使用builder生成xml。

答案 3 :(得分:4)

以下是在Ruby中构建XML的更多选项

REXML - 内置但速度很慢,尤其是在处理大型文档时

Nokogiri - 更新更快,安装为rubygem

LibXML-Ruby - 建立在C libxml库上,也可以安装为rubygem

如果您无法安装rubygems,那么REXML是您的最佳选择。如果您要创建大型复杂的XML文档,那么Nokogiri或LibXML-Ruby就是您想要使用的。