Create a series of SAX-like XML events (e.g. start_tag, end_tag) from the markup code. XmlEvent objects are used in a way similar to XmlMarkup objects, except that a series of events are generated and passed to a handler rather than generating character-based markup.


  xe =
  xe.title("HI")    # Sends start_tag/end_tag/text messages to the handler.

Indentation may also be selected by providing value for the indentation size and initial indentation level.

  xe =, indent_size, initial_indent_level)

XML Event Handler

The handler object must expect the following events.

start_tag(tag, attrs)
Announces that a new tag has been found. tag is the name of the tag and attrs is a hash of attributes for the tag.
Announces that an end tag for tag has been found.
Announces that a string of characters (text) has been found. A series of characters may be broken up into more than one text call, so the client cannot assume that a single callback contains all the text data.
Public Instance methods
    # File lib/builder/xmlevents.rb, line 58
58:     def _end_tag(sym)
59:       @target.end_tag(sym)
60:     end
_start_tag(sym, attrs, end_too=false)
    # File lib/builder/xmlevents.rb, line 53
53:     def _start_tag(sym, attrs, end_too=false)
54:       @target.start_tag(sym, attrs)
55:       _end_tag(sym) if end_too
56:     end
    # File lib/builder/xmlevents.rb, line 49
49:     def text!(text)
50:       @target.text(text)
51:     end