Represents a tagged XML element. Elements are
characterized by having children, attributes, and names, and can themselves
be children.
| attributes |
[R] |
|
| context |
[RW] |
|
| elements |
[R] |
|
Namespace
Constructor
| arg: | if not supplied, will be set to the default value. If a String, the name of
this object will be set to the argument. If an Element, the object will be shallowly cloned; name,
attributes, and namespaces will be copied. If a Source, the source will be scanned and parsed for an
Element, and all child elements will be
recursively parsed as well.
| | parent: | if supplied, must be a Parent, and will be used
as the parent of this object.
| | context: | If supplied, must be a hash containing context items. Context items
include:
* :respect_whitespace:: the value of this is +:all+ or an array of
strings being the names of the elements to respect
whitespace for. Defaults to +:all+.
* :ignore_whitespace:: the value can be +:all+ or an array of
strings being the names of the elements to ignore whitespace on.
Overrides :respect_whitespace.
* :raw:: can be +:all+, or an array of strings being the names of
the elements to process in raw mode. In raw mode, special
characters in text is not converted to or from entities.
|
Creates a shallow copy of self.
d = Document.new "<a><b/><b/><c><d/></c></a>"
new_a = d.root.clone
puts new_a # => "<a/>"
Evaluates to the root element of the document that this element belongs to.
If this element doesn't belong to a document, but does belong to another Element, the parent's root will be returned, until
the earliest ancestor is found.
Evaluates to true if whitespace is respected for this element.
This is the case if the context has +:respect_whitespace+ set to +:all+ or
an array containing the name of this element, and +:ignore_whitespace+
isn't set to +:all+ or an array containing the name of this element. The
evaluation is tested against expanded_name, and so is namespace
sensitive.
Evaluates to true if raw mode is set for this element. This is the
case if the context has +:raw+ set to +:all+ or an array containing the
name of this element. The evaluation is tested against
expanded_name, and so is namespace sensitive.
Evaluates to an Array containing the prefixes (names) of all
defined namespaces
Evalutas to the URI for a prefix, or the empty string if no such namespace
is declared for this element. Evaluates recursively for ancestors.
Adds a namespace to this element.
a = Element.new("a")
a.add_namespace("foo", "bar")
a.add_namespace(nil, "twiddle")
puts a #-> <a xmlns:foo='bar' xmlns='twiddle'/>
NEEDS DOCUMENTATION
Adds a child to this element, optionally setting attributes in the element.
@param element optional. If Element, the element
is added. Otherwise, a new Element is
constructed with the argument (see Element.initialize). @param attrs If supplied, must
be a hash of String name,value pairs, which will be used to set the
attributes of the new Element. @return the Element that was added
Deletes a child element. @param element Must be an Element, String, or Integer. If Element, the element is removed. If String, the
element is found (via XPath) and removed. NOTE
that this means that any parent can remove any descendant. If Integer, the
Element indexed by that number will be removed.
@return the element that was removed.
@return true if this element has at least one child Element
Iterates through the children, yielding for each Element that has a particular attribute set. @param
key the name of the attribute to search for @param value the value of the
attribute @param max (optional) causes this method to return after yielding
for this number of matching children @param name (optional) if supplied,
this is an XPath that filters the children to
check.
Iterates through the children, yielding for each Element that has a particular text set. @param key
the name of the attribute to search for @param value the value of the
attribute @param max (optional) causes this method to return after yielding
for this number of matching children @param name (optional) if supplied,
this is an XPath that filters the children to
check. @see text
Synonym for elements.each
This is a little slower than calling elements.each directly. @return an
array of Elements that match the supplied path
@param xpath any XPath by which to search for
elements in the tree
Returns the next sibling that is an element, or nil if there is no Element sibling after this one
Returns the previous sibling that is an element, or nil if there is no Element sibling prior to this one
@return true if this element has at least one Text
child
A convenience method which returns the first child text element. NOTE that
an element may have multiple Text elements, perhaps
separated by other children; consider: "<p>some text this is
bold! more text<p>" The element <p> has two text
elements, "some text " and " more text". This method
would return only the first, "some text ". @return the String
content of the first child text element encountered.
This is the same method as text(), only this method returns the actual Text object, rather than the String content. @return
the first Text child encountered.
Sets the first Text child of this object. See
text() for a discussion about Text children. If a
Text child already exists, the child is replaced by
this content. This means that Text content can be
deleted by calling this method with a nil argument. In this case, the next
Text child becomes the first Text child. In no case is the order of any siblings
disturbed. @param text If a String, a new Text
child is created and added to this Element as
the first Text child. If Text, the text is set as the first Child element. If nil, then any existing first Text child is removed. @return self. NOTE that
contrary to most REXML methods, the replaced
content is not returned.
A helper method to add a Text child. Actual Text instances can be added with regular Parent methods, such as add() and <<() @param
text if a String, a new Text instance is created
and added to the parent. If Text, the object is
added directly. @return self. NOTE that contrary to most REXML methods, the object added to the parent is
not returned.
@return true if this element has any attributes set, false otherwise.
Adds an attribute to this element, overwriting any existing attribute by
the same name. @param key 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. @param value not required, and is ignored if the first argument
is an Attribute. Otherwise, this is a String,
and is used as the value of the new Attribute.
@return the Attribute added
Add multiple attributes to this element. EG: el.add_attributes(
{"name1"=>"value1",
"name2"=>"value2"} ) el.add_attributes( [
["name1","value1"],
["name2"=>"value2"] ] ) @p hash is either a hash, or
array of arrays
Removes an attribute @param key 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. @return the
attribute removed, or nil if this Element did
not contain a matching attribute
Writes out this element, and recursively, all children. @param writer A
String or IO (or any object supporting <<(String)) @param indent if
supplied, must be an Integer, which is then used to determine the
indentation of this element and its children.
|