在ruby中写入XML

35 ruby xml file

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

<?xml version="1.0" encoding="ASCII"?>
<product>
   <name>Test</name>
</product>
Run Code Online (Sandbox Code Playgroud)

而已.

Mik*_*use 66

生成器应该是你的第一个停止点:

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
Run Code Online (Sandbox Code Playgroud)

产生这个:

<?xml version="1.0" encoding="ASCII"?>
<product>
  <name>Test</name>
</product>
Run Code Online (Sandbox Code Playgroud)

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

一些Builder引用:


its*_*lay 16

只需使用 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
Run Code Online (Sandbox Code Playgroud)

将输出:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <products>
    <widget>
      <id>10</id>
      <name>Awesome widget</name>
    </widget>
  </products>
</root>
Run Code Online (Sandbox Code Playgroud)

  • 这可能是我见过的Nokogiri最简单的例子.真棒. (2认同)

sep*_*p2k 8

您可以使用构建器生成xml.


Pee*_*lan 5

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

REXML - 内置但非常慢,尤其是在处理大型文档时

Nokogiri - 更新更快,作为 ruby​​gem 安装

LibXML-Ruby - 基于 C libxml 库构建,也作为 ruby​​gem 安装

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