2009-04-01 4 views
1

De l'API libxml-ruby docs (http://libxml.rubyforge.org/rdoc/index.html), sous LibXML :: XML :: Document, j'ai essayé ce qui suit:Ruby: Impossible d'enregistrer le document avec Libxml-ruby

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') 

... qui a entraîné cette erreur:

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

(où la dernière ligne dans le bloc ci-dessus était la ligne 26).

J'ai essayé de changer le nom de fichier à un entier, ce qui m'a donné ceci:

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

Je recueilli que je dois utiliser une chaîne, mais les chaînes ne semblent pas fonctionner. Comme je ne peux trouver aucun exemple de libxml-ruby en action sur Google, je suis à court de mots. Toute aide serait très appréciée, ou des liens vers n'importe quel exemple en ligne où je peux voir comment libxml-ruby est utilisé pour créer des documents XML.

libxml-ruby 1.1.3 rubygems 1.3.1 rubis 1.8.7

Répondre

4

Il semble que le problème est avec le codage. Essayez XML::Encoding::UTF_8 au lieu de "utf-8".

+0

Oui, cela a fonctionné. Pourquoi les docs n'ont-ils pas dit de faire ça? – neezer

+0

Documentation probablement obsolète, la modification 0.9.6 mentionne ici la rupture de l'ancien code: http://libxml.rubyforge.org/rdoc/files/CHANGES.html –

+0

Gotcha. Merci quand même. – 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) 
Questions connexes