def write( output=$stdout, indent=-1, transitive=false, ie_hack=false )
      if xml_decl.encoding != "UTF-8" && !output.kind_of?(Output)
        output = Output.new( output, xml_decl.encoding )
      end
      formatter = if indent > -1
          if transitive
            require "rexml/formatters/transitive"
            REXML::Formatters::Transitive.new( indent, ie_hack )
          else
            REXML::Formatters::Pretty.new( indent, ie_hack )
          end
        else
          REXML::Formatters::Default.new( ie_hack )
        end
      formatter.write( self, output )
    end
def write( output=$stdout, indent=-1, transitive=false, ie_hack=false )
      if xml_decl.encoding != "UTF-8" && !output.kind_of?(Output)
        output = Output.new( output, xml_decl.encoding )
      end
      formatter = if indent > -1
          if transitive
            require "rexml/formatters/transitive"
            REXML::Formatters::Transitive.new( indent, ie_hack )
          else
            REXML::Formatters::Pretty.new( indent, ie_hack )
          end
        else
          REXML::Formatters::Default.new( ie_hack )
        end
      formatter.write( self, output )
    end
Write the XML tree out, optionally with indent.  This writes out the
 entire XML document, including XML declarations, doctype declarations,
 and processing instructions (if any are given).

 A controversial point is whether Document should always write the XML
 declaration (<?xml version='1.0'?>) whether or not one is given by the
 user (or source document).  REXML does not write one if one was not
 specified, because it adds unnecessary bandwidth to applications such
 as XML-RPC.

 See also the classes in the rexml/formatters package for the proper way
 to change the default formatting of XML output

 _Examples_
   Document.new("<a><b/></a>").serialize

   output_string = ""
   tr = Transitive.new( output_string )
   Document.new("<a><b/></a>").serialize( tr )

 output::
	  output an object which supports '<< string'; this is where the
   document will be written.
 indent::
   An integer.  If -1, no indenting will be used; otherwise, the
   indentation will be twice this number of spaces, and children will be
   indented an additional amount.  For a value of 3, every item will be
   indented 3 more levels, or 6 more spaces (2 * 3). Defaults to -1
 transitive::
   If transitive is true and indent is >= 0, then the output will be
   pretty-printed in such a way that the added whitespace does not affect
   the absolute *value* of the document -- that is, it leaves the value
   and number of Text nodes in the document unchanged.
 ie_hack::
   Internet Explorer is the worst piece of crap to have ever been
   written, with the possible exception of Windows itself.  Since IE is
   unable to parse proper XML, we have to provide a hack to generate XML
   that IE's limited abilities can handle.  This hack inserts a space
   before the /> on empty tags.  Defaults to false