[xml.rb] require 'dbi' DBI::Utils::XMLFormatter.table(dbh.select_all("SELECT * FROM people")) [/xml.rb] When I run this from the dos prompt, I do get the appropriate output, IE: c:\scripts>ruby xml.rb <?xml version="1.0" encoding="UTF-8" ?> <rows> <row> <id>1</id> <name>Wanda</name> <height>62.5</height> </row> <row> <id>2</id> <name>Robert</name> <height>75.0</height> </row> c:\scripts> But from within the script, I'm unable to capture this output as a string, for example: irb> require 'dbi' irb> asdf = DBI::Utils::XMLFormatter.table(dbh.select_all("SELECT * FROM people")) irb> puts asdf => #<IO:0x2c18968> [/xml_borked.rb] I'd like to be able to use puts to output the results of the DBI::Utils::XMLFormatter method. Any suggestions? Thank you
on 2006-05-19 04:21
on 2006-05-19 05:13
x1 wrote: > <id>1</id> > But from within the script, I'm unable to capture this output as a > > Any suggestions? The XMLFormatter.table method takes four arguments. The fourth argument specifies an IO handle to send the output. By default this is set to STDOUT. So, your options are to either provide an IO object for the fourth argument, or temporarily redirect STDOUT. I should mention that this part of the dbi package has not been refactored or properly documented via rdoc yet. We need to get on that. :) Regards, Dan
on 2006-05-29 23:40
I never could get it to work properly... It's like.. when I used the fourth variable as you suggested, the <rows> component was missing. IE: irb> DBI::Utils::XMLFormatter.table(dbh.select_all("SELECT * FROM people"), nil, nil, asdf) puts asdf <> <row> <yada> </yada> </row> </> When I threw in the variable as the second paramater, I would get the <rows> piece but not the <row>.... Hard to expain right now because I have no db to test it on but at work, this is what happened... Does this provide enough detail?