Class REXML::Formatters::Default
In: lib/rexml/formatters/default.rb
Parent: Object

Methods

Public Class methods

Prints out the XML document with no formatting — except if id_hack is set.

ie_hack:If set to true, then inserts whitespace before the close of an empty tag, so that IE‘s bad XML parser doesn‘t choke.

[Source]

    # File lib/rexml/formatters/default.rb, line 10
10:       def initialize( ie_hack=false )
11:         @ie_hack = ie_hack
12:       end

Public Instance methods

Writes the node to some output.

node:The node to write
output:A class implementing <<. Pass in an Output object to change the output encoding.

[Source]

    # File lib/rexml/formatters/default.rb, line 21
21:       def write( node, output )
22:         case node
23: 
24:         when Document 
25:           if node.xml_decl.encoding != "UTF-8" && !output.kind_of?(Output)
26:             output = Output.new( output, node.xml_decl.encoding )
27:           end
28:           write_document( node, output )
29: 
30:         when Element
31:           write_element( node, output )
32: 
33:         when Declaration, ElementDecl, NotationDecl, ExternalEntity, Entity,
34:              Attribute, AttlistDecl
35:           node.write( output,-1 )
36: 
37:         when Instruction
38:           write_instruction( node, output )
39: 
40:         when DocType, XMLDecl
41:           node.write( output )
42: 
43:         when Comment
44:           write_comment( node, output )
45: 
46:         when CData
47:           write_cdata( node, output )
48: 
49:         when Text
50:           write_text( node, output )
51: 
52:         else
53:           raise Exception.new("XML FORMATTING ERROR")
54: 
55:         end
56:       end

Protected Instance methods

[Source]

    # File lib/rexml/formatters/default.rb, line 94
94:       def write_cdata( node, output )
95:         output << CData::START
96:         output << node.to_s
97:         output << CData::STOP
98:       end

[Source]

    # File lib/rexml/formatters/default.rb, line 88
88:       def write_comment( node, output )
89:         output << Comment::START
90:         output << node.to_s
91:         output << Comment::STOP
92:       end

[Source]

    # File lib/rexml/formatters/default.rb, line 59
59:       def write_document( node, output )
60:         node.children.each { |child| write( child, output ) }
61:       end

[Source]

    # File lib/rexml/formatters/default.rb, line 63
63:       def write_element( node, output )
64:         output << "<#{node.expanded_name}"
65: 
66:         node.attributes.each_attribute do |attr|
67:           output << " "
68:           attr.write( output )
69:         end unless node.attributes.empty?
70: 
71:         if node.children.empty?
72:           output << " " if @ie_hack
73:           output << "/" 
74:         else
75:           output << ">"
76:           node.children.each { |child|
77:             write( child, output )
78:           }
79:           output << "</#{node.expanded_name}"
80:         end
81:         output << ">"
82:       end

[Source]

     # File lib/rexml/formatters/default.rb, line 100
100:       def write_instruction( node, output )
101:         output << Instruction::START.sub(/\\/u, '')
102:         output << node.target
103:         output << ' '
104:         output << node.content
105:         output << Instruction::STOP.sub(/\\/u, '')
106:       end

[Source]

    # File lib/rexml/formatters/default.rb, line 84
84:       def write_text( node, output )
85:         output << node.to_s()
86:       end

[Validate]