Class | Nokogiri::XML::Node |
In: |
lib/nokogiri/ffi/xml/node.rb
lib/nokogiri/xml/node/save_options.rb lib/nokogiri/xml/node.rb ext/nokogiri/xml_sax_parser.c |
Parent: | Object |
call-seq:
new(document, name, content)
Create a new ProcessingInstruction element on the document with name and content
ELEMENT_NODE | = | 1 | Element node type, see Nokogiri::XML::Node#element? | |
ATTRIBUTE_NODE | = | 2 | Attribute node type | |
TEXT_NODE | = | 3 | Text node type, see Nokogiri::XML::Node#text? | |
CDATA_SECTION_NODE | = | 4 | CDATA node type, see Nokogiri::XML::Node#cdata? | |
ENTITY_REF_NODE | = | 5 | Entity reference node type | |
ENTITY_NODE | = | 6 | Entity node type | |
PI_NODE | = | 7 | PI node type | |
COMMENT_NODE | = | 8 | Comment node type, see Nokogiri::XML::Node#comment? | |
DOCUMENT_NODE | = | 9 | Document node type, see Nokogiri::XML::Node#xml? | |
DOCUMENT_TYPE_NODE | = | 10 | Document type node type | |
DOCUMENT_FRAG_NODE | = | 11 | Document fragment node type | |
NOTATION_NODE | = | 12 | Notation node type | |
HTML_DOCUMENT_NODE | = | 13 | HTML document node type, see Nokogiri::XML::Node#html? | |
DTD_NODE | = | 14 | DTD node type | |
ELEMENT_DECL | = | 15 | Element declaration type | |
ATTRIBUTE_DECL | = | 16 | Attribute declaration type | |
ENTITY_DECL | = | 17 | Entity declaration type | |
NAMESPACE_DECL | = | 18 | Namespace declaration type | |
XINCLUDE_START | = | 19 | XInclude start type | |
XINCLUDE_END | = | 20 | XInclude end type | |
DOCB_DOCUMENT_NODE | = | 21 | DOCB document node type |
next_sibling | -> | next |
previous_sibling | -> | previous |
unlink | -> | remove |
attr | -> | : |
[]= | -> | set_attribute |
text | -> | : |
content | -> | inner_text |
key? | -> | has_attribute? |
node_name | -> | name |
node_name= | -> | name= |
node_type | -> | type |
text | -> | to_str |
dup | -> | clone |
element_children | -> | elements |
add_namespace_definition | -> | add_namespace |
Add node_or_tags as a child of this Node. node_or_tags can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup.
Returns the reparented node (if node_or_tags is a Node), or NodeSet (if node_or_tags is a DocumentFragment, NodeSet, or string).
Adds a namespace definition with prefix using href value. The result is as if parsed XML for this node had included an attribute ‘xmlns:prefix=value’. A default namespace for this node ("xmlns=") can be added by passing ‘nil’ for prefix. Namespaces added this way will not show up in attributes, but they will be included as an xmlns attribute when the node is serialized to XML.
Insert node_or_tags after this Node (as a sibling). node_or_tags can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup.
Returns the reparented node (if node_or_tags is a Node), or NodeSet (if node_or_tags is a DocumentFragment, NodeSet, or string).
Also see related method after.
Insert node_or_tags before this Node (as a sibling). node_or_tags can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup.
Returns the reparented node (if node_or_tags is a Node), or NodeSet (if node_or_tags is a DocumentFragment, NodeSet, or string).
Also see related method before.
Insert node_or_tags after this node (as a sibling). node_or_tags can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a string containing markup.
Returns self, to support chaining of calls.
Also see related method add_next_sibling.
Search this node for the first occurrence of XPath paths. Equivalent to xpath(paths).first See Node#xpath for more information.
Returns a hash containing the node‘s attributes. The key is the attribute name without any namespace, the value is a Nokogiri::XML::Attr representing the attribute. If you need to distinguish attributes with the same name, with different namespaces use attribute_nodes instead.
Insert node_or_tags before this node (as a sibling). node_or_tags can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup.
Returns self, to support chaining of calls.
Also see related method add_previous_sibling.
Set the inner html for this Node node_or_tags node_or_tags can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a string containing markup.
Returns the reparented node (if node_or_tags is a Node), or NodeSet (if node_or_tags is a DocumentFragment, NodeSet, or string).
Also see related method +inner_html=+
Create the internal subset of a document.
doc.create_internal_subset("chapter", "-//OASIS//DTD DocBook XML//EN", "chapter.dtd") # => <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML//EN" "chapter.dtd"> doc.create_internal_subset("chapter", nil, "chapter.dtd") # => <!DOCTYPE chapter SYSTEM "chapter.dtd">
Search this node for CSS rules. rules must be one or more CSS selectors. For example:
node.css('title') node.css('body h1.bold') node.css('div + p.green', 'div#one')
A hash of namespace bindings may be appended. For example:
node.css('bike|tire', {'bike' => 'http://schwinn.com/'})
Custom CSS pseudo classes may also be defined. To define custom pseudo classes, create a class and implement the custom pseudo class you want defined. The first argument to the method will be the current matching NodeSet. Any other arguments are ones that you pass in. For example:
node.css('title:regex("\w+")', Class.new { def regex node_set, regex node_set.find_all { |node| node['some_attribute'] =~ /#{regex}/ } end }.new)
Note that the CSS query string is case-sensitive with regards to your document type. That is, if you‘re looking for "H1" in an HTML document, you‘ll never find anything, since HTML tags will match only lowercase CSS queries. However, "H1" might be found in an XML document, where tags names are case-sensitive (e.g., "H1" is distinct from "h1").
Adds a default namespace supplied as a string url href, to self. The consequence is as an xmlns attribute with supplied argument were present in parsed XML. A default namespace set with this method will now show up in attributes, but when this node is serialized to XML an "xmlns" attribute will appear. See also namespace and namespace=
Fetch the Nokogiri::HTML::ElementDescription for this node. Returns nil on XML documents and on unknown tags.
Copy this node. An optional depth may be passed in, but it defaults to a deep copy. 0 is a shallow copy, 1 is a deep copy.
Returns the first child node of this node that is an element.
Example:
@doc.root.first_element_child.element? # => true
Set the inner html for this Node to node_or_tags node_or_tags can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a string containing markup.
Returns self.
Also see related method +children=+
Returns the last child node of this node that is an element.
Example:
@doc.root.last_element_child.element? # => true
Set the default namespace on this node (as would be defined with an "xmlns=" attribute in XML source), as a Namespace object ns. Note that a Namespace added this way will NOT be serialized as an xmlns attribute for this node. You probably want default_namespace= instead, or perhaps add_namespace_definition with a nil prefix argument.
returns namespaces defined on self element directly, as an array of Namespace objects. Includes both a default namespace (as in"xmlns="), and prefixed namespaces (as in "xmlns:prefix=").
returns namespaces in scope for self — those defined on self element directly or any ancestor node — as an array of Namespace objects. Default namespaces ("xmlns=" style) for self are included in this array; Default namespaces for ancestors, however, are not. See also namespaces
Returns a Hash of {prefix => value} 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 that the keys in this hash XML attributes that would be used to define this namespace, such as "xmlns:prefix", not just the prefix. Default namespace set on self will be included with key "xmlns". However, default namespaces set on ancestor will NOT be, even if self has no explicit default namespace.
Parse string_or_io as a document fragment within the context of this node. Returns a XML::NodeSet containing the nodes parsed from string_or_io.
Replace this Node with node_or_tags. node_or_tags can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup.
Returns the reparented node (if node_or_tags is a Node), or NodeSet (if node_or_tags is a DocumentFragment, NodeSet, or string).
Also see related method swap.
Search this node for paths. paths can be XPath or CSS, and an optional hash of namespaces may be appended. See Node#xpath and Node#css.
Serialize Node using options. Save options can also be set using a block. See SaveOptions.
These two statements are equivalent:
node.serialize(:encoding => 'UTF-8', :save_with => FORMAT | AS_XML)
or
node.serialize(:encoding => 'UTF-8') do |config| config.format.as_xml end
Swap this Node for node_or_tags node_or_tags can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup.
Returns self, to support chaining of calls.
Also see related method replace.
doc.to_html
See Node#write_to for a list of options. For formatted output, use Node#to_xhtml instead.
Serialize this Node to XHTML using options
doc.to_xhtml(:indent => 5, :encoding => 'UTF-8')
See Node#write_to for a list of options
Serialize this Node to XML using options
doc.to_xml(:indent => 5, :encoding => 'UTF-8')
See Node#write_to for a list of options
Write Node as HTML to io with options
See Node#write_to for a list of options
Write Node to io with options. options modify the output of this method. Valid options are:
To save with UTF-8 indented twice:
node.write_to(io, :encoding => 'UTF-8', :indent => 2)
To save indented with two dashes:
node.write_to(io, :indent_text => '-', :indent => 2
Write Node as XHTML to io with options
See Node#write_to for a list of options
Write Node as XML to io with options
doc.write_xml_to io, :encoding => 'UTF-8'
See Node#write_to for a list of options
Search this node for XPath paths. paths must be one or more XPath queries.
node.xpath('.//title')
A hash of namespace bindings may be appended. For example:
node.xpath('.//foo:name', {'foo' => 'http://example.org/'}) node.xpath('.//xmlns:name', node.root.namespaces)
A hash of variable bindings may also be appended to the namespace bindings. For example:
node.xpath('.//address[@domestic=$value]', nil, {:value => 'Yes'})
Custom XPath functions may also be defined. To define custom functions create a class and implement the function you want to define. The first argument to the method will be the current matching NodeSet. Any other arguments are ones that you pass in. Note that this class may appear anywhere in the argument list. For example:
node.xpath('.//title[regex(., "\w+")]', Class.new { def regex node_set, regex node_set.find_all { |node| node['some_attribute'] =~ /#{regex}/ } end }.new)