Class: Moxml::Element
Constant Summary
Constants inherited from Node
Instance Attribute Summary
Attributes inherited from Node
Instance Method Summary collapse
- #[](name) ⇒ Object
- #[]=(name, value) ⇒ Object
- #add_namespace(prefix, uri) ⇒ Object (also: #add_namespace_definition)
- #attribute(name) ⇒ Object
- #attributes ⇒ Object
-
#expanded_name ⇒ Object
Returns the expanded name including namespace prefix.
- #find_all(xpath) ⇒ Object
-
#find_element(xpath) ⇒ Object
Convenience find methods.
-
#get(attr_name) ⇒ Object
Alias for getting attribute value (used by XPath engine).
-
#identifier ⇒ String
Returns the primary identifier for this element (its tag name).
-
#in_scope_namespaces ⇒ Object
Returns all namespaces in scope for this element, including those inherited from ancestor elements.
- #inner_text ⇒ Object
- #inner_xml ⇒ Object
- #inner_xml=(xml) ⇒ Object
- #name ⇒ Object
- #name=(value) ⇒ Object
-
#namespace ⇒ Object
it’s NOT the same as namespaces.first.
-
#namespace=(ns_or_hash) ⇒ Object
add the prefix to the element name and add the namespace to the list of namespace definitions.
-
#namespace_name ⇒ Object
Returns the namespace URI of this element (alias for namespace_uri).
-
#namespace_prefix ⇒ Object
Returns the namespace prefix of this element.
-
#namespace_uri ⇒ Object
Returns the namespace URI of this element.
- #namespaces ⇒ Object (also: #namespace_definitions)
-
#nodes ⇒ Object
Alias for children (used by XPath engine).
- #remove_attribute(name) ⇒ Object
-
#set_attributes(attributes_hash) ⇒ Object
Bulk attribute setting.
- #text ⇒ Object
- #text=(content) ⇒ Object
-
#with_attribute(name, value) ⇒ Object
Fluent interface methods.
-
#with_child(child) ⇒ Object
Chainable child addition.
- #with_namespace(prefix, uri) ⇒ Object
- #with_text(content) ⇒ Object
Methods inherited from Node
#==, adapter, #add_child, #add_next_sibling, #add_previous_sibling, #at_xpath, #children, #clone, #document, #each_node, #find, #first_child, #has_children?, #initialize, #last_child, #next_sibling, #parent, #previous_sibling, #remove, #replace, #to_xml, wrap, #xpath
Methods included from XmlUtils
#encode_entities, #normalize_xml_value, #validate_comment_content, #validate_declaration_encoding, #validate_declaration_standalone, #validate_declaration_version, #validate_element_name, #validate_entity_reference_name, #validate_pi_target, #validate_prefix, #validate_uri
Constructor Details
This class inherits a constructor from Moxml::Node
Instance Method Details
#[](name) ⇒ Object
47 48 49 |
# File 'lib/moxml/element.rb', line 47 def [](name) adapter.get_attribute_value(@native, name) end |
#[]=(name, value) ⇒ Object
43 44 45 |
# File 'lib/moxml/element.rb', line 43 def []=(name, value) adapter.set_attribute(@native, name, normalize_xml_value(value)) end |
#add_namespace(prefix, uri) ⇒ Object Also known as: add_namespace_definition
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/moxml/element.rb', line 77 def add_namespace(prefix, uri) adapter.create_namespace(@native, prefix, uri, namespace_uri_mode: context.config.namespace_uri_mode) self rescue ValidationError => e # Re-raise as NamespaceError, provide attributes for error context # but the to_s will only add details if provided raise Moxml::NamespaceError.new( e., prefix: prefix, uri: uri, element: self, ) end |
#attribute(name) ⇒ Object
51 52 53 54 |
# File 'lib/moxml/element.rb', line 51 def attribute(name) native_attr = adapter.get_attribute(@native, name) native_attr && Attribute.new(native_attr, context) end |
#attributes ⇒ Object
66 67 68 69 70 |
# File 'lib/moxml/element.rb', line 66 def attributes adapter.attributes(@native).map do |attr| Attribute.new(attr, context) end end |
#expanded_name ⇒ Object
Returns the expanded name including namespace prefix
23 24 25 26 27 28 29 |
# File 'lib/moxml/element.rb', line 23 def if namespace_prefix && !namespace_prefix.empty? "#{namespace_prefix}:#{name}" else name end end |
#find_all(xpath) ⇒ Object
187 188 189 |
# File 'lib/moxml/element.rb', line 187 def find_all(xpath) xpath(xpath).to_a end |
#find_element(xpath) ⇒ Object
Convenience find methods
183 184 185 |
# File 'lib/moxml/element.rb', line 183 def find_element(xpath) at_xpath(xpath) end |
#get(attr_name) ⇒ Object
Alias for getting attribute value (used by XPath engine)
57 58 59 |
# File 'lib/moxml/element.rb', line 57 def get(attr_name) attribute(attr_name) end |
#identifier ⇒ String
Returns the primary identifier for this element (its tag name)
18 19 20 |
# File 'lib/moxml/element.rb', line 18 def identifier name end |
#in_scope_namespaces ⇒ Object
Returns all namespaces in scope for this element, including those inherited from ancestor elements.
122 123 124 125 126 |
# File 'lib/moxml/element.rb', line 122 def in_scope_namespaces adapter.in_scope_namespaces(@native).map do |ns| Namespace.new(ns, context) end end |
#inner_text ⇒ Object
141 142 143 |
# File 'lib/moxml/element.rb', line 141 def inner_text adapter.inner_text(@native) end |
#inner_xml ⇒ Object
145 146 147 |
# File 'lib/moxml/element.rb', line 145 def inner_xml adapter.inner_xml(@native) end |
#inner_xml=(xml) ⇒ Object
149 150 151 152 |
# File 'lib/moxml/element.rb', line 149 def inner_xml=(xml) doc = context.parse("<root>#{xml}</root>") adapter.replace_children(@native, doc.root.children.map(&:native)) end |
#name ⇒ Object
8 9 10 |
# File 'lib/moxml/element.rb', line 8 def name adapter.node_name(@native) end |
#name=(value) ⇒ Object
12 13 14 |
# File 'lib/moxml/element.rb', line 12 def name=(value) adapter.set_node_name(@native, value) end |
#namespace ⇒ Object
it’s NOT the same as namespaces.first
94 95 96 97 |
# File 'lib/moxml/element.rb', line 94 def namespace ns = adapter.namespace(@native) ns && Namespace.new(ns, context) end |
#namespace=(ns_or_hash) ⇒ Object
add the prefix to the element name and add the namespace to the list of namespace definitions
101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/moxml/element.rb', line 101 def namespace=(ns_or_hash) if ns_or_hash.is_a?(Hash) adapter.set_namespace( @native, adapter.create_namespace(@native, *ns_or_hash.to_a.first, namespace_uri_mode: context.config.namespace_uri_mode), ) else adapter.set_namespace(@native, ns_or_hash&.native) end end |
#namespace_name ⇒ Object
Returns the namespace URI of this element (alias for namespace_uri)
129 130 131 |
# File 'lib/moxml/element.rb', line 129 def namespace_name namespace_uri end |
#namespace_prefix ⇒ Object
Returns the namespace prefix of this element
32 33 34 35 |
# File 'lib/moxml/element.rb', line 32 def namespace_prefix ns = namespace ns&.prefix end |
#namespace_uri ⇒ Object
Returns the namespace URI of this element
38 39 40 41 |
# File 'lib/moxml/element.rb', line 38 def namespace_uri ns = namespace ns&.uri end |
#namespaces ⇒ Object Also known as: namespace_definitions
113 114 115 116 117 |
# File 'lib/moxml/element.rb', line 113 def namespaces adapter.namespace_definitions(@native).map do |ns| Namespace.new(ns, context) end end |
#nodes ⇒ Object
Alias for children (used by XPath engine)
192 193 194 |
# File 'lib/moxml/element.rb', line 192 def nodes children end |
#remove_attribute(name) ⇒ Object
72 73 74 75 |
# File 'lib/moxml/element.rb', line 72 def remove_attribute(name) adapter.remove_attribute(@native, name) self end |
#set_attributes(attributes_hash) ⇒ Object
Bulk attribute setting
171 172 173 174 |
# File 'lib/moxml/element.rb', line 171 def set_attributes(attributes_hash) attributes_hash.each { |name, value| self[name] = value } self end |
#text ⇒ Object
133 134 135 |
# File 'lib/moxml/element.rb', line 133 def text adapter.text_content(@native) end |
#text=(content) ⇒ Object
137 138 139 |
# File 'lib/moxml/element.rb', line 137 def text=(content) adapter.set_text_content(@native, normalize_xml_value(content)) end |
#with_attribute(name, value) ⇒ Object
Fluent interface methods
155 156 157 158 |
# File 'lib/moxml/element.rb', line 155 def with_attribute(name, value) self[name] = value self end |
#with_child(child) ⇒ Object
Chainable child addition
177 178 179 180 |
# File 'lib/moxml/element.rb', line 177 def with_child(child) add_child(child) self end |
#with_namespace(prefix, uri) ⇒ Object
160 161 162 163 |
# File 'lib/moxml/element.rb', line 160 def with_namespace(prefix, uri) add_namespace(prefix, uri) self end |
#with_text(content) ⇒ Object
165 166 167 168 |
# File 'lib/moxml/element.rb', line 165 def with_text(content) self.text = content self end |