Parses arg
and returns rest of arg
and matched portion to the argument pattern. Yields when the pattern doesn’t match substring.
see Enumerator
#with_index.
see Enumerator
#with_object.
Replaces this object with another object. Basically, calls Parent.replace_child
self
Adds a child to this element, optionally setting attributes in the element.
optional. If Element
, the element is added. Otherwise, a new Element
is constructed with the argument (see Element.initialize).
If supplied, must be a Hash
containing String name,value pairs, which will be used to set the attributes of the new Element
.
the Element
that was added
el = doc.add_element 'my-tag' el = doc.add_element 'my-tag', {'attr1'=>'val1', 'attr2'=>'val2'} el = Element.new 'my-tag' doc.add_element el
Deletes a child element.
Must be an Element
, String
, or Integer
. If Element
, the element is removed. If String, the element is found (via XPath
) and removed. <em>This means that any parent can remove any descendant.<em> If Integer
, the Element
indexed by that number will be removed.
the element that was removed.
doc.delete_element "/a/b/c[@id='4']" doc.delete_element doc.elements["//k"] doc.delete_element 1
Evaluates to true
if this element has at least one child Element
doc = Document.new "<a><b/><c>Text</c></a>" doc.root.has_elements # -> true doc.elements["/a/b"].has_elements # -> false doc.elements["/a/c"].has_elements # -> false
Synonym for Element.elements
.each
Synonym for Element.to_a This is a little slower than calling elements.each directly.
Returns the next sibling that is an element, or nil if there is no Element
sibling after this one
doc = Document.new '<a><b/>text<c/></a>' doc.root.elements['b'].next_element #-> <c/> doc.root.elements['c'].next_element #-> nil
Returns the previous sibling that is an element, or nil if there is no Element
sibling prior to this one
doc = Document.new '<a><b/>text<c/></a>' doc.root.elements['c'].previous_element #-> <b/> doc.root.elements['b'].previous_element #-> nil
Evaluates to true
if this element has any attributes set, false otherwise.
Adds an attribute to this element, overwriting any existing attribute by the same name.
can be either an Attribute
or a String. If an Attribute
, the attribute is added to the list of Element
attributes. If String, the argument is used as the name of the new attribute, and the value parameter must be supplied.
Required if key
is a String, and ignored if the first argument is an Attribute
. This is a String, and is used as the value of the new Attribute
. This should be the unnormalized value of the attribute (without entities).
the Attribute
added
e = Element.new 'e' e.add_attribute( 'a', 'b' ) #-> <e a='b'/> e.add_attribute( 'x:a', 'c' ) #-> <e a='b' x:a='c'/> e.add_attribute Attribute.new('b', 'd') #-> <e a='b' x:a='c' b='d'/>
Add multiple attributes to this element.
is either a hash, or array of arrays
el.add_attributes( {"name1"=>"value1", "name2"=>"value2"} ) el.add_attributes( [ ["name1","value1"], ["name2"=>"value2"] ] )
Removes an attribute
either an Attribute
or a String. In either case, the attribute is found by matching the attribute name to the argument, and then removed. If no attribute is found, no action is taken.
the attribute removed, or nil if this Element
did not contain a matching attribute
e = Element.new('E') e.add_attribute( 'name', 'Sean' ) #-> <E name='Sean'/> r = e.add_attribute( 'sur:name', 'Russell' ) #-> <E name='Sean' sur:name='Russell'/> e.delete_attribute( 'name' ) #-> <E sur:name='Russell'/> e.delete_attribute( r ) #-> <E/>
Iterates over the attributes of an Element
. Yields actual Attribute
nodes, not String values.
doc = Document.new '<a x="1" y="2"/>' doc.root.attributes.each_attribute {|attr| p attr.expanded_name+" => "+attr.value }
Fetches an attribute
the name by which to search for the attribute. Can be a prefix:name
namespace name.
The first matching attribute, or nil if there was none. This
value is an Attribute
node, not the String value of the attribute.
doc = Document.new '<a x:foo="1" foo="2" bar="3"/>' doc.root.attributes.get_attribute("foo").value #-> "2" doc.root.attributes.get_attribute("x:foo").value #-> "1"
Generates a Source
object @param arg Either a String, or an IO
@return a Source
, or nil if a bad argument was given