Ruby: не могу сохранить документ с помощью libxml-ruby

Из документации по libxml-ruby API ( http://libxml.rubyforge.org/rdoc/index.html) в разделе LibXML::XML::Document я попытался сделать следующее:

filename = 'something.xml'
stats_doc = XML::Document.new()
stats_doc.root = XML::Node.new('root_node')
stats_doc.root << XML::Node.new('elem1')
stats_doc.save(filename, :indent => true, :encoding => 'utf-8')

... что привело к этой ошибке:

parse_stats.rb:26:in `save': can't convert String into Integer (TypeError)

(где последней строкой в ​​блоке выше была строка 26).

Я попытался изменить имя файла на целое число, которое дало мне это:

parse_stats.rb:26:in `save': wrong argument type Fixnum (expected String) (TypeError)

Итак, я понял, что мне нужно использовать строку, но кажется, что строки не работают. Поскольку мне кажется, что я не могу найти какие-либо примеры libxml-ruby в действии от Google, я в растерянности. Буду очень признателен за любую помощь, или ссылки на любой онлайн-пример, где я могу увидеть, как libxml-ruby используется для создания документов XML.

libxml-ruby 1.1.3 rubygems 1.3.1 ruby ​​1.8.7

2 ответа

Решение

Кажется, проблема в кодировке. Попробуйте XML::Encoding::UTF_8 вместо "utf-8".

require 'rubygems'
require 'libxml'

filename = 'something.xml'
stats_doc = LibXML::XML::Document.new()
stats_doc.root = LibXML::XML::Node.new('root_node')
stats_doc.root << LibXML::XML::Node.new('elem1')
stats_doc.save(filename, :indent => true, :encoding => LibXML::XML::Encoding::UTF_8)
Другие вопросы по тегам