DOM Node class. More...

#include <dom_node.h>

+ Inheritance diagram for clan::DomNode:

Public Types

enum  NodeType {
  NULL_NODE = 0, ELEMENT_NODE = 1, ATTRIBUTE_NODE = 2, TEXT_NODE = 3,
  CDATA_SECTION_NODE = 4, ENTITY_REFERENCE_NODE = 5, ENTITY_NODE = 6, PROCESSING_INSTRUCTION_NODE = 7,
  COMMENT_NODE = 8, DOCUMENT_NODE = 9, DOCUMENT_TYPE_NODE = 10, DOCUMENT_FRAGMENT_NODE = 11,
  NOTATION_NODE = 12
}
 An integer indicating which type of node this is. More...
 

Public Member Functions

 DomNode ()
 
 DomNode (const DomNode &copy)
 Constructs a DomNode. More...
 
 ~DomNode ()
 
DomNode append_child (DomNode new_child)
 Adds the node new_child to the end of the list of children of this node. More...
 
DomNode clone_node (bool deep) const
 Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. More...
 
DomString find_namespace_uri (const DomString &qualified_name) const
 Searches the node tree upwards for the namespace URI of the given qualified name. More...
 
DomString find_prefix (const DomString &namespace_uri) const
 Searches the node tree upwards for the prefix name for the namespace URI. More...
 
DomNamedNodeMap get_attributes () const
 A NamedNodeMap containing the attributes of this node (if it is an Element) or null otherwise. More...
 
DomNodeList get_child_nodes () const
 Returns a NodeList that contains all children of this node. More...
 
DomNode get_first_child () const
 The first child of this node. More...
 
DomNode get_last_child () const
 The last child of this node. More...
 
DomString get_local_name () const
 Returns local part of the qualified name of this node. More...
 
DomString get_namespace_uri () const
 Returns the namespace URI of this node. More...
 
DomNode get_next_sibling () const
 The node immediately following this node. More...
 
DomString get_node_name () const
 Returns the node name. More...
 
unsigned short get_node_type () const
 Returns the node type (one of those in the NodeType enum). More...
 
DomString get_node_value () const
 Returns the node value. More...
 
DomDocument get_owner_document () const
 The Document object associated with this node. More...
 
DomNode get_parent_node () const
 Returns the parent of this node. More...
 
DomString get_prefix () const
 Returns the namespace prefix of the node. More...
 
DomNode get_previous_sibling () const
 The node immediately preceding this node. More...
 
bool has_attributes () const
 Returns true if this node (if its an element) has any attributes. More...
 
bool has_child_nodes () const
 Returns true if this node has any children. More...
 
DomNode insert_before (DomNode &new_child, DomNode &ref_child)
 Inserts the node new_child before the existing child node ref_child. More...
 
bool is_attr () const
 Returns true if this is an attribute node. More...
 
bool is_cdata_section () const
 Returns true if this is a CDATA section node. More...
 
bool is_comment () const
 Returns true if this is a comment node. More...
 
bool is_document () const
 Returns true if this is a document node. More...
 
bool is_document_fragment () const
 Returns true if this is a document fragment node. More...
 
bool is_document_type () const
 Returns true if this is a document type node. More...
 
bool is_element () const
 Returns true if this is an element node. More...
 
bool is_entity () const
 Returns true if this is an entity node. More...
 
bool is_entity_reference () const
 Returns true if this is an entity reference node. More...
 
bool is_notation () const
 Returns true if this is a notation node. More...
 
bool is_null () const
 Returns true if this is a null node. More...
 
bool is_processing_instruction () const
 Returns true if this is a processing instruction node. More...
 
bool is_supported (const DomString &feature, const DomString &version) const
 Tests whether the DOM implementation implements a specific feature and that feature is supported by this node. More...
 
bool is_text () const
 Returns true if this is a text node. More...
 
DomNode named_item (const DomString &name) const
 Returns the first child node with the specified node name. More...
 
DomNode named_item_ns (const DomString &namespace_uri, const DomString &local_name) const
 Retrieves the first child node with the specified namespace URI and local name. More...
 
void normalize ()
 Merges any adjacent Text nodes. More...
 
bool operator!= (const DomNode &other) const
 Compare operator. More...
 
DomNodeoperator= (const DomNode &copy)
 Copy assignment operator. More...
 
bool operator== (const DomNode &other) const
 Compare operator. More...
 
DomNode remove_child (DomNode &old_child)
 Removes the child node indicated by old_child from the list of children, and returns it. More...
 
DomNode replace_child (DomNode &new_child, DomNode &old_child)
 Replaces the child node old_child with new_child in the list of children. More...
 
bool select_bool (const DomString &xpath_expression) const
 Returns the first node value (as boolean) matching the specified xpath expression using this node as the context node. More...
 
float select_float (const DomString &xpath_expression) const
 Returns the first node value (as float) matching the specified xpath expression using this node as the context node. More...
 
int select_int (const DomString &xpath_expression) const
 Returns the first node value (as integer) matching the specified xpath expression using this node as the context node. More...
 
DomNode select_node (const DomString &xpath_expression) const
 Returns the first node matching the specified xpath expression using this node as the context node. More...
 
std::vector< DomNodeselect_nodes (const DomString &xpath_expression) const
 Returns all the nodes matching the specified xpath expression using this node as the context node. More...
 
std::string select_string (const DomString &xpath_expression) const
 Returns the first node value matching the specified xpath expression using this node as the context node. More...
 
void set_node_value (const DomString &value)
 Sets the node value. More...
 
void set_prefix (const DomString &prefix)
 Sets the namespace prefix of the node. More...
 
DomAttr to_attr () const
 Returns the Attribute interface to this node. More...
 
DomCDATASection to_cdata_section () const
 Returns the CDATA Section interface to this node. More...
 
DomComment to_comment () const
 Returns the Comment interface to this node. More...
 
DomDocument to_document () const
 Returns the Document interface to this node. More...
 
DomDocumentFragment to_document_fragment () const
 Returns the Document Fragment interface to this node. More...
 
DomDocumentType to_document_type () const
 Returns the Document Type interface to this node. More...
 
DomElement to_element () const
 Returns the Element interface to this node. More...
 
DomEntity to_entity () const
 Returns the Entity interface to this node. More...
 
DomEntityReference to_entity_reference () const
 Returns the Entity Reference interface to this node. More...
 
DomNotation to_notation () const
 Returns the Notation interface to this node. More...
 
DomProcessingInstruction to_processing_instruction () const
 Returns the Processing Instruction interface to this node. More...
 
DomText to_text () const
 Returns the Text interface to this node. More...
 

Protected Member Functions

 DomNode (DomDocument doc, unsigned short node_type)
 
 DomNode (const std::shared_ptr< DomNode_Impl > &impl)
 

Protected Attributes

std::shared_ptr< DomNode_Impl > impl
 

Friends

class DomDocument
 
class DomNamedNodeMap
 

Detailed Description

DOM Node class.

The Node interface is the primary datatype for the entire Document Object Model. It represents a single node in the document tree. While all objects implementing the Node interface expose methods for dealing with children, not all objects implementing the Node interface may have children. For example, Text nodes may not have children, and adding children to such nodes results in a DOMException being thrown.

The attributes 'node_name', 'node_value' and 'attributes' are included as a mechanism to get at node information without casting down to the specific derived interface. In cases where there is no obvious mapping of these attributes for a specific node_type (e.g., node_value for an Element or attributes for a Comment), this returns null. Note that the specialized interfaces may contain additional and more convenient mechanisms to get and set the relevant information.

Constructor & Destructor Documentation

clan::DomNode::DomNode ( )
clan::DomNode::DomNode ( const DomNode copy)

Constructs a DomNode.

Parameters
copy= Dom Node
clan::DomNode::~DomNode ( )
clan::DomNode::DomNode ( DomDocument  doc,
unsigned short  node_type 
)
protected
clan::DomNode::DomNode ( const std::shared_ptr< DomNode_Impl > &  impl)
protected

Member Function Documentation

DomNode clan::DomNode::append_child ( DomNode  new_child)

Adds the node new_child to the end of the list of children of this node.

If the new_child is already in the tree, it is first removed.

DomNode clan::DomNode::clone_node ( bool  deep) const

Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.

The duplicate node has no parent.

Cloning an Element copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes, but this method does not copy any text it contains unless it is a deep clone, since the text is contained in a child Text node. Cloning any other type of node simply returns a copy of this node.

Parameters
deepIf true, recursively clone the subtree under the specified node; if false, clone only the node itself (and its attributes, if it is an Element). retval: The duplicate node.
DomString clan::DomNode::find_namespace_uri ( const DomString qualified_name) const

Searches the node tree upwards for the namespace URI of the given qualified name.

DomString clan::DomNode::find_prefix ( const DomString namespace_uri) const

Searches the node tree upwards for the prefix name for the namespace URI.

DomNamedNodeMap clan::DomNode::get_attributes ( ) const

A NamedNodeMap containing the attributes of this node (if it is an Element) or null otherwise.

DomNodeList clan::DomNode::get_child_nodes ( ) const

Returns a NodeList that contains all children of this node.

If there are no children, this is a NodeList containing no nodes. The content of the returned NodeList is "live" in the sense that, for instance, changes to the children of the node object that it was created from are immediately reflected in the nodes returned by the NodeList accessors; it is not a static snapshot of the content of the node. This is true for every NodeList, including the ones returned by the getElementsByTagName method.

DomNode clan::DomNode::get_first_child ( ) const

The first child of this node.

If there is no such node, this returns a null node.

DomNode clan::DomNode::get_last_child ( ) const

The last child of this node.

If there is no such node, this returns a null node.

DomString clan::DomNode::get_local_name ( ) const

Returns local part of the qualified name of this node.

For nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, such as create_element from the Document interface, this is always an empty string.

DomString clan::DomNode::get_namespace_uri ( ) const

Returns the namespace URI of this node.

DomNode clan::DomNode::get_next_sibling ( ) const

The node immediately following this node.

If there is no such node, this returns a null node.

DomString clan::DomNode::get_node_name ( ) const

Returns the node name.

The return value vary according to the node type as follows:

  • Element: name of tag
  • Attr: name of attribute
  • Text: "#text"
  • CDataSection: "#cdata-section"
  • EntityReference: name of entity referenced
  • Entity: entity name
  • ProcessingInstruction: target
  • Comment: "#comment"
  • Document: "#document"
  • DocumentType: document type name
  • DocumentFragment: "#document-fragment"
  • Notation: notation name
unsigned short clan::DomNode::get_node_type ( ) const

Returns the node type (one of those in the NodeType enum).

DomString clan::DomNode::get_node_value ( ) const

Returns the node value.

The return value vary according to the node type as follows:

  • Element: null
  • Attr: value of attribute
  • Text: content of text node
  • CDataSection: content of CDATA Section
  • EntityReference: null
  • Entity: null
  • ProcessingInstruction: entire content excluding the target
  • Comment: content of the comment
  • Document: null
  • DocumentType: null
  • DocumentFragment: null
  • Notation: null
DomDocument clan::DomNode::get_owner_document ( ) const

The Document object associated with this node.

This is also the Document object used to create new nodes. When this node is a Document this is null.

DomNode clan::DomNode::get_parent_node ( ) const

Returns the parent of this node.

All nodes, except Document, DocumentFragment, and Attr may have a parent. However, if a node has just been created and not yet added to the tree, or if it has been removed from the tree, this is null.

DomString clan::DomNode::get_prefix ( ) const

Returns the namespace prefix of the node.

For nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, such as create_element from the Document interface, this is always an empty string.

DomNode clan::DomNode::get_previous_sibling ( ) const

The node immediately preceding this node.

If there is no such node, this returns a null node.

bool clan::DomNode::has_attributes ( ) const

Returns true if this node (if its an element) has any attributes.

bool clan::DomNode::has_child_nodes ( ) const

Returns true if this node has any children.

DomNode clan::DomNode::insert_before ( DomNode new_child,
DomNode ref_child 
)

Inserts the node new_child before the existing child node ref_child.

If refChild is a null node, inserts new_child at the end of the list of children.

If newChild is a DocumentFragment object, all of its children are inserted, in the same order, before ref_child. If the new_child is already in the tree, it is first removed.

Parameters
new_childThe node to insert.
ref_childThe reference node, i.e., the node before which the new node must be inserted. retval: The node being inserted.
bool clan::DomNode::is_attr ( ) const

Returns true if this is an attribute node.

bool clan::DomNode::is_cdata_section ( ) const

Returns true if this is a CDATA section node.

bool clan::DomNode::is_comment ( ) const

Returns true if this is a comment node.

bool clan::DomNode::is_document ( ) const

Returns true if this is a document node.

bool clan::DomNode::is_document_fragment ( ) const

Returns true if this is a document fragment node.

bool clan::DomNode::is_document_type ( ) const

Returns true if this is a document type node.

bool clan::DomNode::is_element ( ) const

Returns true if this is an element node.

bool clan::DomNode::is_entity ( ) const

Returns true if this is an entity node.

bool clan::DomNode::is_entity_reference ( ) const

Returns true if this is an entity reference node.

bool clan::DomNode::is_notation ( ) const

Returns true if this is a notation node.

bool clan::DomNode::is_null ( ) const

Returns true if this is a null node.

bool clan::DomNode::is_processing_instruction ( ) const

Returns true if this is a processing instruction node.

bool clan::DomNode::is_supported ( const DomString feature,
const DomString version 
) const

Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.

bool clan::DomNode::is_text ( ) const

Returns true if this is a text node.

DomNode clan::DomNode::named_item ( const DomString name) const

Returns the first child node with the specified node name.

Returns a null node if no child is found.

DomNode clan::DomNode::named_item_ns ( const DomString namespace_uri,
const DomString local_name 
) const

Retrieves the first child node with the specified namespace URI and local name.

void clan::DomNode::normalize ( )

Merges any adjacent Text nodes.

Puts all Text nodes in the full depth of the sub-tree underneath this node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes.

This can be used to ensure that the DOM view of a document is the same as if it were saved and re-loaded, and is useful when operations (such as XPointer lookups) that depend on a particular document tree structure are to be used.

Note: In cases where the document contains CDATASections, the normalize operation alone may not be sufficient, since XPointers do not differentiate between Text nodes and CDATASection nodes.

bool clan::DomNode::operator!= ( const DomNode other) const

Compare operator.

DomNode& clan::DomNode::operator= ( const DomNode copy)

Copy assignment operator.

All objects in the DOM are handles to the underlying implementation. Therefore this doesn't actually copy contents between two DomNode's, but instead change the two DomNode's to point at the same node in the DOM.

bool clan::DomNode::operator== ( const DomNode other) const

Compare operator.

DomNode clan::DomNode::remove_child ( DomNode old_child)

Removes the child node indicated by old_child from the list of children, and returns it.

DomNode clan::DomNode::replace_child ( DomNode new_child,
DomNode old_child 
)

Replaces the child node old_child with new_child in the list of children.

If the new_child is already in the tree, it is first removed.

Parameters
new_childThe new node to put in the child list.
old_childThe node being replaced in the list. retval: The node replaced.
bool clan::DomNode::select_bool ( const DomString xpath_expression) const

Returns the first node value (as boolean) matching the specified xpath expression using this node as the context node.

float clan::DomNode::select_float ( const DomString xpath_expression) const

Returns the first node value (as float) matching the specified xpath expression using this node as the context node.

int clan::DomNode::select_int ( const DomString xpath_expression) const

Returns the first node value (as integer) matching the specified xpath expression using this node as the context node.

DomNode clan::DomNode::select_node ( const DomString xpath_expression) const

Returns the first node matching the specified xpath expression using this node as the context node.

std::vector<DomNode> clan::DomNode::select_nodes ( const DomString xpath_expression) const

Returns all the nodes matching the specified xpath expression using this node as the context node.

std::string clan::DomNode::select_string ( const DomString xpath_expression) const

Returns the first node value matching the specified xpath expression using this node as the context node.

void clan::DomNode::set_node_value ( const DomString value)

Sets the node value.

void clan::DomNode::set_prefix ( const DomString prefix)

Sets the namespace prefix of the node.

Note that setting this attribute, when permitted, changes the node_name attribute, which holds the qualified name, as well as the tag_name and name attributes of the Element and Attr interfaces, when applicable.

Note also that changing the prefix of an attribute that is known to have a default value, does not make a new attribute with the default value and the original prefix appear, since the namespace_uri and local_name do not change.

DomAttr clan::DomNode::to_attr ( ) const

Returns the Attribute interface to this node.

If the node is not an Attribute node, then it returns a null node.

DomCDATASection clan::DomNode::to_cdata_section ( ) const

Returns the CDATA Section interface to this node.

If the node is not a CDATA Section node, then it returns a null node.

DomComment clan::DomNode::to_comment ( ) const

Returns the Comment interface to this node.

If the node is not a Comment node, then it returns a null node.

DomDocument clan::DomNode::to_document ( ) const

Returns the Document interface to this node.

If the node is not a Document node, then it returns a null node.

DomDocumentFragment clan::DomNode::to_document_fragment ( ) const

Returns the Document Fragment interface to this node.

If the node is not a DocumentFragment node, then it returns a null node.

DomDocumentType clan::DomNode::to_document_type ( ) const

Returns the Document Type interface to this node.

If the node is not a Document Type node, then it returns a null node.

DomElement clan::DomNode::to_element ( ) const

Returns the Element interface to this node.

If the node is not an Element node, then it returns a null node.

DomEntity clan::DomNode::to_entity ( ) const

Returns the Entity interface to this node.

If the node is not an Entity node, then it returns a null node.

DomEntityReference clan::DomNode::to_entity_reference ( ) const

Returns the Entity Reference interface to this node.

If the node is not an Entity Reference node, then it returns a null node.

DomNotation clan::DomNode::to_notation ( ) const

Returns the Notation interface to this node.

If the node is not a Notation node, then it returns a null node.

DomProcessingInstruction clan::DomNode::to_processing_instruction ( ) const

Returns the Processing Instruction interface to this node.

If the node is not a Processing Instrucion node, then it returns a null node.

DomText clan::DomNode::to_text ( ) const

Returns the Text interface to this node.

If the node is not a Text node, then it returns a null node.

Friends And Related Function Documentation

friend class DomDocument
friend
friend class DomNamedNodeMap
friend

Member Data Documentation

std::shared_ptr<DomNode_Impl> clan::DomNode::impl
protected

The documentation for this class was generated from the following file: