Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Prints out the XML document with no formatting – except if id_hack is set.
If set to true, then inserts whitespace before the close of an empty tag, so that IE’s bad XML parser doesn’t choke.
# File rexml/formatters/default.rb, line 10 def initialize( ie_hack=false ) @ie_hack = ie_hack end
Writes the node to some output.
The node to write
A class implementing <<
. Pass in an Output object to change the output encoding.
# File rexml/formatters/default.rb, line 21 def write( node, output ) case node when Document if node.xml_decl.encoding != 'UTF-8' && !output.kind_of?(Output) output = Output.new( output, node.xml_decl.encoding ) end write_document( node, output ) when Element write_element( node, output ) when Declaration, ElementDecl, NotationDecl, ExternalEntity, Entity, Attribute, AttlistDecl node.write( output,-1 ) when Instruction write_instruction( node, output ) when DocType, XMLDecl node.write( output ) when Comment write_comment( node, output ) when CData write_cdata( node, output ) when Text write_text( node, output ) else raise Exception.new("XML FORMATTING ERROR") end end
# File rexml/formatters/default.rb, line 96 def write_cdata( node, output ) output << CData::START output << node.to_s output << CData::STOP end
# File rexml/formatters/default.rb, line 90 def write_comment( node, output ) output << Comment::START output << node.to_s output << Comment::STOP end
# File rexml/formatters/default.rb, line 59 def write_document( node, output ) node.children.each { |child| write( child, output ) } end
# File rexml/formatters/default.rb, line 63 def write_element( node, output ) output << "<#{node.expanded_name}" node.attributes.to_a.map { |a| Hash === a ? a.values : a }.flatten.sort_by {|attr| attr.name}.each do |attr| output << " " attr.write( output ) end unless node.attributes.empty? if node.children.empty? output << " " if @ie_hack output << "/" else output << ">" node.children.each { |child| write( child, output ) } output << "</#{node.expanded_name}" end output << ">" end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.