Подтвердить что ты не робот

Запись в XML в рубине

Я совершенно новичок в Ruby. Все, что я хочу, это создать простой XML файл.

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

Что это.

4b9b3361

Ответ 1

Builder должен, вероятно, быть вашей первой остановкой:

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>

который выглядит правильно для меня.

Некоторые ссылки Builder:

Ответ 2

Вы можете использовать builder для создания xml.

Ответ 3

Просто с 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>

Ответ 4

Вот еще несколько вариантов построения XML в Ruby

REXML - встроенный, но очень медленный, особенно при работе с большими документами

Nokogiri - новее и быстрее, устанавливается как rubygem

LibXML-Ruby - построен на библиотеке C libxml, также устанавливается как rubygem

Если вы не можете установить rubygems, то REXML - это ваши лучшие варианты. Если вы собираетесь создавать большие сложные документы XML, то Nokogiri или LibXML-Ruby - это то, что вы хотели бы использовать.