2009-04-01 5 views
1

Из LibXML-рубиновый API Docs (http://libxml.rubyforge.org/rdoc/index.html), при Libxml :: XML :: Документ, я попытался следующий:Ruby: Невозможно сохранить документ с Libxml-рубином

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-рубиновый 1.1.3 RubyGems 1.3.1 рубин 1.8.7

ответ

4

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

+0

Да, это сработало. Почему документы не сказали, чтобы сделать это? – neezer

+0

Вероятно, устаревшая документация, изменение 0.9.6 здесь упоминает нарушение старого кода: http://libxml.rubyforge.org/rdoc/files/CHANGES.html –

+0

Gotcha. Спасибо, в любом случае. – neezer

0
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) 
Смежные вопросы