I'd like to thank you very much Pit,
that's working fine.

Bye Lgs

On 27 Gen, 14:45, Pit Capitain <p... / capitain.de> wrote:
> Luca g. Soave schrieb:
>
>
>
> > 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" .Luca, welcome to Ruby! I've never used REXML before, so all this might
> be completely wrong, but with the line
>
>    out_file.write "#{doc.parse}"
>
> you are writing the result of the #parse method to the output file,
> which might be just an empty string if the result is nil. I think all
> the calls of print and puts in your listeners just write to the console
> where you run your script. To get what you want I would try to change
> your program to:
>
>    require 'rexml/parsers/sax2parser'
>
>    file = File.new "lapatyXML.xml"
>    doc = REXML::Parsers::SAX2Parser.new file
>
>    File.open("outfile.xls","w") do |out_file|
>
>      doc.listen(:characters, ["title"]) do |title|
>        out_file.print "\"#{title}\" : "
>      end
>      doc.listen(:characters, ["link"]) do |link|
>        out_file.print "#{link} : "
>      end
>      doc.listen(:characters, ["dc:date"]) do |date|
>        out_file.print "#{date} : "
>      end
>      doc.listen(:characters, ["dc:subject"]) do |subject|
>        out_file.puts "#{subject}"
>      end
>
>      doc.parse
>
>    end
>
> Regards,
> Pit