Class Nokogiri::XML::Node
In: lib/nokogiri/xml/node.rb
lib/nokogiri/xml/node/save_options.rb
lib/nokogiri/ffi/xml/node.rb
ext/nokogiri/xml_namespace.c
Parent: Object

call-seq:

 new(document, content)

Create a new EntityReference element on the document with name

Methods

Included Modules

Nokogiri::XML::PP::Node

Classes and Modules

Class Nokogiri::XML::Node::SaveOptions

Constants

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

External Aliases

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
add_namespace_definition -> add_namespace

Public Class methods

Create a new node with name sharing GC lifecycle with document

Public Instance methods

%(path, ns = document.root ? document.root.namespaces : {})

Alias for at

/(*paths)

Alias for search

<<(node)

Alias for add_child

Compare two Node objects with respect to their Document. Nodes from different documents cannot be compared.

Test to see if this Node is equal to other

Search this node‘s immidiate children using CSS selector selector

Get the attribute value for the attribute name

Set the property to value

Accept a visitor. This method calls "visit" on visitor with self.

Add node as a child of this Node. The new node must be a Nokogiri::XML::Node or a non-empty String. Returns the new child node.

Adds a namespace definition with prefix using href

Insert node after this Node (as a sibling).

Insert node before this Node (as a sibling).

Create nodes from data and insert them after this node (as a sibling).

Get a list of ancestor Node for this Node. If selector is given, the ancestors must match selector

Search for the first occurrence of path. Returns nil if nothing is found, otherwise a Node.

Search this node for the first occurrence of CSS rules. Equivalent to css(rules).first See Node#css for more information.

Search this node for the first occurrence of XPath paths. Equivalent to xpath(paths).first See Node#xpath for more information.

Get the attribute node with name

returns a list containing the Node attributes.

Returns a hash containing the node‘s attributes. The key is the attribute name, the value is a Nokogiri::XML::Attr representing the attribute.

Create nodes from data and insert them before this node (as a sibling).

Is this node blank?

Returns true if this is a CDATA

Returns the child node

Get the list of children for this node as a NodeSet

Returns true if this is a Comment

Compare this Node to other with respect to their Document

Returns the content for this Node

Set the Node content to string. The content gets XML escaped.

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')

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)

Get the path to this node as a CSS expression

Decorate this node with the decorators set up in this node‘s Document

Set the default namespace for this node to url

delete(name)

Alias for remove_attribute

Fetch the Nokogiri::HTML::ElementDescription for this node. Returns nil on XML documents and on unknown tags.

Get the document for this Node

Returns the Node as html.

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.

Iterate over each attribute name and value pair for this Node.

elem?()

Alias for element?

Returns true if this is an Element node

Encode any special characters in string

Get the external subset

Get the value for attribute

get_attribute(name)

Alias for #[]

Returns true if this is an HTML::Document node

Get the inner_html for this node‘s Node#children

Set the inner_html for this Node to tags

Get the internal subset

Returns true if attribute is set

Get the attribute names for this Node.

Returns the line for this Node

Returns true if this Node matches selector

returns the Nokogiri::XML::Namespace for the node, if one exists.

Set the namespace for this node to ns

returns a list of Namespace nodes defined on self

Get a hash containing the Namespace definitions for this Node

Set the content for this Node

Write this Node to io with encoding and options

Returns the next Nokogiri::XML::Element type sibling node.

Returns the next sibling node

Returns the name for this Node

Set the name for this Node

Get the type for this Node

Get the parent Node for this Node

Returns the path associated with this Node

Get the internal pointer number

previous=(node)

Returns the previous Nokogiri::XML::Element type sibling node.

Returns the previous sibling node

Is this a read only node?

Remove the attribute named name

replace this Node with the node in the Document. The new node must be a Nokogiri::XML::Node or a non-empty String. Returns the new child node.

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 new nodes made from data

Returns true if this is a Text node

Serialize this Node to HTML

  doc.to_html

See Node#write_to for a list of options. For formatted output, use Node#to_xhtml instead.

Turn this node in to a string. If the document is HTML, this method returns html. If the document is XML, this method returns XML.

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

Yields self and all children to block recursively.

Unlink this node from its current context.

Get the attribute values for this Node.

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:

  • +:encoding+ for changing the encoding
  • +:indent_text+ the indentation text, defaults to one space
  • +:indent+ the number of +:indent_text+ to use, defaults to 2
  • +:save_with+ a combination of SaveOptions constants.

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

Returns true if this is an XML::Document node

Search this node for XPath paths. paths must be one or more XPath queries. A hash of namespaces may be appended. For example:

  node.xpath('.//title')
  node.xpath('.//foo:name', { 'foo' => 'http://example.org/' })
  node.xpath('.//xmlns:name', node.root.namespaces)

Custom XPath functions may also be defined. To define custom functions create a class and implement the # function you want to define. 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)

[Validate]