Hello,
I’m new to Ruby and trying to write a stream in to a file,
but I can just get an empty one. I tryed in different way
found heare on the forum ( IO lib, Rio lib,
out_file << “#{doc.parse}” and so on ).
Here I show you the simplest :
require ‘rexml/parsers/sax2parser’
file = File.new “lapatyXML.xml”
doc = REXML::Parsers::SAX2Parser.new file
doc.listen(:characters, [“title”]) do |title|
print “”#{title}" : "
end
doc.listen(:characters, [“link”]) do |link|
print "#{link} : "
end
doc.listen(:characters, [“dc:date”]) do |date|
print "#{date} : "
end
doc.listen(:characters, [“dc:subject”]) do |subject|
puts “#{subject}”
end
File.open(“outfile.xls”,“w”) do |out_file|
out_file.write “#{doc.parse}”
end
Nothing seems to work, I just get an empty file “outfile.xls” .
… of course doc.parse contain a correct stream :
irb(main):067:0> doc.inspect
=> “#<REXML::Parsers::SAX2Parser:0x2f4aba8 @procs=[[:characters,
“title”, #<Pr
oc:[email protected](irb):48>], [:characters, “link”,
#Proc:[email protected]:51(irb)],
[:characters, “dc:date”, #Proc:[email protected]:54(irb)], [:characters,
“dc:subj
ect”, #Proc:[email protected]:57(irb)]], @tag_stack=[], @listeners=[],
@has_listene
rs=false, @namespace_stack=[],
@parser=#<REXML::Parsers::BaseParser:0x2f4ab80 @d
ocument_status=nil, @source=#<REXML::IOSource:0x2f4ab08
@source=#<File:lapatyXML
.xml>, @er_source=#<File:lapatyXML.xml>, @buffer=”<?xml
version=\“1.0\” enc
oding=\“UTF-8\”?>", @line=0, @line_break=">", @orig="<?xml
version=\“1
.0\” encoding=\“UTF-8\”?>", @to_utf=false, @encoding=“UTF-8”>,
@closed=
nil, @stack=[], @tags=[], @entities=[]>, @entities={}>"
irb(main):068:0>
irb(main):018:0> doc.type
(irb):18: warning: Object#type is deprecated; use Object#class
=> REXML::Parsers::SAX2Parser
irb(main):019:0> doc.class
=> REXML::Parsers::SAX2Parser
Any suggestion ?
Thanks in advance
Lgs