libhomegear-base  0.7
Base library for Homegear and Homegear family modules.
rapidxml::xml_node Class Reference

Class representing a node of XML document. More...

#include <rapidxml.h>

Inheritance diagram for rapidxml::xml_node:
rapidxml::xml_base rapidxml::xml_document

Public Member Functions

 xml_node (node_type type)
 Constructs an empty node with the specified type. More...
 
node_type type () const
 Gets type of node. More...
 
xml_documentdocument () const
 Gets document of which node is a child. More...
 
xml_nodefirst_node (const char *name=nullptr, std::size_t name_size=0, bool case_sensitive=true) const
 Gets first child node, optionally matching node name. More...
 
xml_nodelast_node (const char *name=nullptr, std::size_t name_size=0, bool case_sensitive=true) const
 Gets last child node, optionally matching node name. More...
 
xml_nodeprevious_sibling (const char *name=nullptr, std::size_t name_size=0, bool case_sensitive=true) const
 Gets previous sibling node, optionally matching node name. More...
 
xml_nodenext_sibling (const char *name=nullptr, std::size_t name_size=0, bool case_sensitive=true) const
 Gets next sibling node, optionally matching node name. More...
 
xml_attributefirst_attribute (const char *name=nullptr, std::size_t name_size=0, bool case_sensitive=true) const
 Gets first attribute of node, optionally matching attribute name. More...
 
xml_attributelast_attribute (const char *name=nullptr, std::size_t name_size=0, bool case_sensitive=true) const
 Gets last attribute of node, optionally matching attribute name. More...
 
void type (node_type type)
 Sets type of node. More...
 
void prepend_node (xml_node *child)
 Prepends a new child node. More...
 
void append_node (xml_node *child)
 Appends a new child node. More...
 
void insert_node (xml_node *where, xml_node *child)
 Inserts a new child node at specified place inside the node. More...
 
void remove_first_node ()
 Removes first child node. More...
 
void remove_last_node ()
 Removes last child of the node. More...
 
void remove_node (xml_node *where)
 Removes specified child from the node. More...
 
void remove_all_nodes ()
 Removes all child nodes (but not attributes). More...
 
void prepend_attribute (xml_attribute *attribute)
 Prepends a new attribute to the node. More...
 
void append_attribute (xml_attribute *attribute)
 Appends a new attribute to the node. More...
 
void insert_attribute (xml_attribute *where, xml_attribute *attribute)
 Inserts a new attribute at specified place inside the node. More...
 
void remove_first_attribute ()
 Removes first attribute of the node. More...
 
void remove_last_attribute ()
 Removes last attribute of the node. More...
 
void remove_attribute (xml_attribute *where)
 Removes specified attribute from node. More...
 
void remove_all_attributes ()
 Removes all attributes of node. More...
 
- Public Member Functions inherited from rapidxml::xml_base
 xml_base ()
 
char * name () const
 Gets name of the node. More...
 
std::size_t name_size () const
 Gets size of node name, not including terminator character. More...
 
char * value () const
 Gets value of node. More...
 
std::size_t value_size () const
 Gets size of node value, not including terminator character. More...
 
void name (const char *name, std::size_t size)
 Sets name of node to a non zero-terminated string. More...
 
void name (const char *name)
 Sets name of node to a zero-terminated string. More...
 
void value (const char *value, std::size_t size)
 Sets value of node to a non zero-terminated string. More...
 
void value (const char *value)
 Sets value of node to a zero-terminated string. More...
 
xml_nodeparent () const
 Gets node parent. More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from rapidxml::xml_base
static char * nullstr ()
 
- Protected Attributes inherited from rapidxml::xml_base
char * m_name
 
char * m_value
 
std::size_t m_name_size
 
std::size_t m_value_size
 
xml_nodem_parent
 

Detailed Description

Class representing a node of XML document.

Each node may have associated name and value strings, which are available through name() and value() functions. Interpretation of name and value depends on type of the node. Type of node can be determined by using type() function.

Note that after parse, both name and value of node, if any, will point interior of source text used for parsing. Thus, this text must persist in the memory for the lifetime of node.

Parameters
ChCharacter type to use.

Constructor & Destructor Documentation

§ xml_node()

rapidxml::xml_node::xml_node ( node_type  type)

Constructs an empty node with the specified type.

Consider using memory_pool of appropriate document to allocate nodes manually.

Parameters
typeType of node to construct.

Member Function Documentation

§ append_attribute()

void rapidxml::xml_node::append_attribute ( xml_attribute attribute)

Appends a new attribute to the node.

Parameters
attributeAttribute to append.

§ append_node()

void rapidxml::xml_node::append_node ( xml_node child)

Appends a new child node.

The appended child becomes the last child.

Parameters
childNode to append.

§ document()

xml_document * rapidxml::xml_node::document ( ) const

Gets document of which node is a child.

Returns
Pointer to document that contains this node, or 0 if there is no parent document.

§ first_attribute()

xml_attribute * rapidxml::xml_node::first_attribute ( const char *  name = nullptr,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const

Gets first attribute of node, optionally matching attribute name.

Parameters
nameName of attribute to find, or 0 to return first attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found attribute, or 0 if not found.

§ first_node()

xml_node * rapidxml::xml_node::first_node ( const char *  name = nullptr,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const

Gets first child node, optionally matching node name.

Parameters
nameName of child to find, or 0 to return first child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found child, or 0 if not found.

§ insert_attribute()

void rapidxml::xml_node::insert_attribute ( xml_attribute where,
xml_attribute attribute 
)

Inserts a new attribute at specified place inside the node.

All attributes after and including the specified attribute are moved one position back.

Parameters
wherePlace where to insert the attribute, or 0 to insert at the back.
attributeAttribute to insert.

§ insert_node()

void rapidxml::xml_node::insert_node ( xml_node where,
xml_node child 
)

Inserts a new child node at specified place inside the node.

All children after and including the specified node are moved one position back.

Parameters
wherePlace where to insert the child, or 0 to insert at the back.
childNode to insert.

§ last_attribute()

xml_attribute * rapidxml::xml_node::last_attribute ( const char *  name = nullptr,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const

Gets last attribute of node, optionally matching attribute name.

Parameters
nameName of attribute to find, or 0 to return last attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found attribute, or 0 if not found.

§ last_node()

xml_node * rapidxml::xml_node::last_node ( const char *  name = nullptr,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const

Gets last child node, optionally matching node name.

Behaviour is undefined if node has no children. Use first_node() to test if node has children.

Parameters
nameName of child to find, or 0 to return last child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found child, or 0 if not found.

§ next_sibling()

xml_node * rapidxml::xml_node::next_sibling ( const char *  name = nullptr,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const

Gets next sibling node, optionally matching node name.

Behaviour is undefined if node has no parent. Use parent() to test if node has a parent.

Parameters
nameName of sibling to find, or 0 to return next sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found sibling, or 0 if not found.

§ prepend_attribute()

void rapidxml::xml_node::prepend_attribute ( xml_attribute attribute)

Prepends a new attribute to the node.

Parameters
attributeAttribute to prepend.

§ prepend_node()

void rapidxml::xml_node::prepend_node ( xml_node child)

Prepends a new child node.

The prepended child becomes the first child, and all existing children are moved one position back.

Parameters
childNode to prepend.

§ previous_sibling()

xml_node * rapidxml::xml_node::previous_sibling ( const char *  name = nullptr,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const

Gets previous sibling node, optionally matching node name.

Behaviour is undefined if node has no parent. Use parent() to test if node has a parent.

Parameters
nameName of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found sibling, or 0 if not found.

§ remove_all_attributes()

void rapidxml::xml_node::remove_all_attributes ( )

Removes all attributes of node.

§ remove_all_nodes()

void rapidxml::xml_node::remove_all_nodes ( )

Removes all child nodes (but not attributes).

§ remove_attribute()

void rapidxml::xml_node::remove_attribute ( xml_attribute where)

Removes specified attribute from node.

Parameters
wherePointer to attribute to be removed.

§ remove_first_attribute()

void rapidxml::xml_node::remove_first_attribute ( )

Removes first attribute of the node.

If node has no attributes, behaviour is undefined. Use first_attribute() to test if node has attributes.

§ remove_first_node()

void rapidxml::xml_node::remove_first_node ( )

Removes first child node.

If node has no children, behaviour is undefined. Use first_node() to test if node has children.

§ remove_last_attribute()

void rapidxml::xml_node::remove_last_attribute ( )

Removes last attribute of the node.

If node has no attributes, behaviour is undefined. Use first_attribute() to test if node has attributes.

§ remove_last_node()

void rapidxml::xml_node::remove_last_node ( )

Removes last child of the node.

If node has no children, behaviour is undefined. Use first_node() to test if node has children.

§ remove_node()

void rapidxml::xml_node::remove_node ( xml_node where)

Removes specified child from the node.

§ type() [1/2]

node_type rapidxml::xml_node::type ( ) const

Gets type of node.

Returns
Type of node.

§ type() [2/2]

void rapidxml::xml_node::type ( node_type  type)

Sets type of node.

Parameters
typeType of node to set.

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