Class REXML::Element
In: lib/xmpp4r/rexmladdons.rb
Parent: Object

this class adds a few helper methods to REXML::Element

Methods

Public Class methods

[Source]

    # File lib/xmpp4r/rexmladdons.rb, line 92
92:     def self.import(xmlelement)
93:       self.new(xmlelement.name).import(xmlelement)
94:     end

Public Instance methods

Deletes one or more children elements, not just one like REXML::Element#delete_element

[Source]

     # File lib/xmpp4r/rexmladdons.rb, line 99
 99:     def delete_elements(element)
100:       while(delete_element(element)) do end
101:     end

Returns first element of name e

[Source]

    # File lib/xmpp4r/rexmladdons.rb, line 49
49:     def first_element(e)
50:       each_element(e) { |el| return el }
51:       return nil
52:     end

Returns text of first element of name e

[Source]

    # File lib/xmpp4r/rexmladdons.rb, line 56
56:     def first_element_text(e)
57:       el = first_element(e)
58:       if el
59:         return el.text
60:       else
61:         return nil
62:       end
63:     end

import this element‘s children and attributes

[Source]

    # File lib/xmpp4r/rexmladdons.rb, line 76
76:     def import(xmlelement)
77:       if @name and @name != xmlelement.name
78:         raise "Trying to import an #{xmlelement.name} to a #{@name} !"
79:       end
80:       add_attributes(xmlelement.attributes.clone)
81:       @context = xmlelement.context
82:       xmlelement.each do |e|
83:         if e.kind_of? REXML::Element
84:           typed_add(e.deep_clone)
85:         else # text element, probably.
86:           add(e.clone)
87:         end
88:       end
89:       self
90:     end

Replaces or add a child element of name e with text t.

[Source]

    # File lib/xmpp4r/rexmladdons.rb, line 35
35:     def replace_element_text(e, t)
36:       el = first_element(e)
37:       if el.nil?
38:         el = REXML::Element::new(e)
39:         add_element(el)
40:       end
41:       if t
42:         el.text = t
43:       end
44:       self
45:     end

This method does exactly the same thing as add(), but it can be overriden by subclasses to provide on-the-fly object creations. For example, if you import a REXML::Element of name ‘plop’, and you have a Plop class that subclasses REXML::Element, with typed_add you can get your REXML::Element to be "magically" converted to Plop.

[Source]

    # File lib/xmpp4r/rexmladdons.rb, line 70
70:     def typed_add(e)
71:       add(e)
72:     end

[Validate]