Пишите в XML на ruby - PullRequest
       35

Пишите в XML на ruby

35 голосов
/ 07 августа 2009

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

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

Вот и все.

Ответы [ 4 ]

66 голосов
/ 07 августа 2009

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

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:

15 голосов
/ 21 ноября 2014

Просто с 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>
8 голосов
/ 07 августа 2009

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

4 голосов
/ 07 августа 2009

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...