From: Sonny Chee Date: 2007-11-14T02:24:28+09:00 Subject: Re: Indenting REXML output... Jari Williamsson wrote: > Sonny Chee wrote: >> Robert Klemme wrote: >>> Not necessary. Documentation is your friend. >>> >>> http://www.germane-software.com/software/rexml/docs/tutorial.html#id2248510 >>> >>> robert >> >> Awesome, even better! Thanks Robert. I was actually reading that >> documentation but somehow overlooked that section. Thanks again! > > Do you get that formatting to work? I get a NameError exception > ("undefined local variable or method `transitive'") when I use a second > parameter to doc.write. As in: > > require "rexml/document" > doc = REXML::Document.new '' > doc.root.add_element("other") > doc.write( $stdout, 0 ) > > > Best regards, > > Jari Williamsson I got the same error message as you did Jari. But I did find the REXML changelog, which shows the revised method to get pretty printing. This worked for me. (http://www.germane-software.com/software/rexml/release.html) ====== r1281@bean: ser | 2007-07-24 11:08:48 -0400 Addresses ticket:85 This is a major rewrite of the XML formatting code. The XML writers have all been extracted out of the classes and put into their own class containers. This makes writing parsers easier, and cleaner. There are three formatters, which correspond to the previous three XML writing modes: REXML::Formatters::Default Prints the XML document exactly as it was parsed REXML::Formatters::Pretty Pretty prints the XML document, destroying whitespace in the document REXML::Formatters::Transitive Pretty prints the XML document, preserving whitespace All of the write() functions have been deprecated (some are still used, but these will also go away) except the write() function on Document, which is left for convenience. To pretty print an XML document the canonical way: formatter = REXML::Formatters::Pretty.new( 5 ) # indent by 5 spaces formatter.write( document, output ================================================================== Sonny. -- Posted via http://www.ruby-forum.com/.