class XML::Node
inherits Reference
¶
Constants¶
LOOKS_LIKE_XPATH = /^(\.\/|\/|\.\.|\.$)/
¶
/^(\.\/|\/|\.\.|\.$)/
Class methods¶
Methods¶
#[](attribute : String) : String
¶
(attribute : String) : String
Gets the attribute content for the attribute given by name.
Raises KeyError
if attribute is not found.
#[]=(name : String, value)
¶
(name : String, value)
Sets attribute of this node to value.
Raises XML::Error
if this node does not support attributes.
#[]?(attribute : String) : String?
¶
(attribute : String) : String?
Gets the attribute content for the attribute given by name.
Returns nil
if attribute is not found.
#content : String
¶
: String
Returns the content for this Node. An empty string is returned if the node has no content.
#content=(content)
¶
(content)
Sets the Node's content to a Text node containing string. The string gets XML escaped, not interpreted as markup.
#delete(name : String)
¶
(name : String)
Deletes attribute given by name.
Returns attributes value, or nil
if attribute not found.
#errors
¶
Returns the list of XML::Error
found when parsing this document.
Returns nil
if no errors were found.
#first_element_child
¶
Returns the first child node of this node that is an element.
Returns nil
if not found.
#inspect(io : IO) : Nil
¶
(io : IO) : Nil
Returns detailed information for this node including node type, name, attributes and children.
#namespace_scopes : Array(Namespace)
¶
: Array(Namespace)
Returns namespaces in scope for self – those defined on self element
directly or any ancestor node – as an Array
of XML::Namespace
objects.
Default namespaces ("xmlns="
style) for self are included in this array;
Default namespaces for ancestors, however, are not.
See also #namespaces
#namespaces : Hash(String, String?)
¶
: Hash(String, String?)
Returns a Hash(String, String?) of prefix => href
for all namespaces
on this node and its ancestors.
This method returns the same namespaces as #namespace_scopes
.
Returns namespaces in scope for self – those defined on self element
directly or any ancestor node – as a Hash
of attribute-name/value pairs.
Note
Note that the keys in this hash XML attributes that would be used to
define this namespace, such as "xmlns:prefix"
, not just the prefix.
#previous_element
¶
Returns the previous sibling node that is an element or nil
if not found.
#previous_sibling
¶
Returns the previous sibling node or nil
if not found.
Same with #previous
.
#to_s(io : IO) : Nil
¶
(io : IO) : Nil
Serialize this Node as XML to io using default options.
See #to_xml
.
#to_xml(indent : Int = 2, indent_text = " ", options : SaveOptions = SaveOptions.xml_default)
¶
(indent : Int = 2, indent_text = " ", options : SaveOptions = SaveOptions.xml_default)
Serialize this Node as XML and return a String
using default options.
See XML::SaveOptions.xml_default
for default options.
#to_xml(io : IO, indent = 2, indent_text = " ", options : SaveOptions = SaveOptions.xml_default)
¶
(io : IO, indent = 2, indent_text = " ", options : SaveOptions = SaveOptions.xml_default)
Serialize this Node as XML to io using default options.
See XML::SaveOptions.xml_default
for default options.
#xpath(path, namespaces = nil, variables = nil)
¶
(path, namespaces = nil, variables = nil)
Searches this node for XPath path. Returns result with appropriate type
(Bool | Float64 | String | XML::NodeSet
).
Raises XML::Error
on evaluation error.
#xpath_bool(path, namespaces = nil, variables = nil)
¶
(path, namespaces = nil, variables = nil)
Searches this node for XPath path and restricts the return type to Bool
.
require "xml"
doc = XML.parse("<person></person>")
doc.xpath_bool("count(//person) > 0") # => true
#xpath_float(path, namespaces = nil, variables = nil)
¶
(path, namespaces = nil, variables = nil)
Searches this node for XPath path and restricts the return type to Float64
.
require "xml"
doc = XML.parse("<person></person>")
doc.xpath_float("count(//person)") # => 1.0
#xpath_node(path, namespaces = nil, variables = nil)
¶
(path, namespaces = nil, variables = nil)
Searches this node for XPath path for nodes and returns the first one.
or nil
if not found
require "xml"
doc = XML.parse("<person></person>")
doc.xpath_node("//person") # => #<XML::Node:0x2013e80 name="person">
doc.xpath_node("//invalid") # => nil
#xpath_nodes(path, namespaces = nil, variables = nil)
¶
(path, namespaces = nil, variables = nil)
Searches this node for XPath path and restricts the return type to NodeSet
.
require "xml"
doc = XML.parse("<person></person>")
nodes = doc.xpath_nodes("//person")
nodes.class # => XML::NodeSet
nodes.map(&.name) # => ["person"]
#xpath_string(path, namespaces = nil, variables = nil)
¶
(path, namespaces = nil, variables = nil)
Searches this node for XPath path and restricts the return type to String
.
require "xml"
doc = XML.parse("<person></person>")
doc.xpath_string("string(/persons/person[1])")