libxml++
5.4.0
|
Represents XML Nodes. More...
#include <libxml++/nodes/node.h>
Public Types | |
using | const_NodeList = std::list< const Node * > |
using | const_NodeSet = std::vector< const Node * > |
using | NodeList = std::list< Node * > |
using | NodeSet = std::vector< Node * > |
using | PrefixNsMap = std::map< ustring, ustring > |
A map of namespace prefixes to namespace URIs. More... | |
Public Member Functions | |
Node (_xmlNode * node) | |
~Node () override | |
Destructor. More... | |
const _xmlNode * | cobj () const noexcept |
Access the underlying libxml implementation. More... | |
_xmlNode * | cobj () noexcept |
Access the underlying libxml implementation. More... | |
bool | eval_to_boolean (const ustring & xpath, const PrefixNsMap & namespaces, XPathResultType * result_type=nullptr) const |
Evaluate an XPath expression. More... | |
bool | eval_to_boolean (const ustring & xpath, XPathResultType * result_type=nullptr) const |
Evaluate an XPath expression. More... | |
double | eval_to_number (const ustring & xpath, const PrefixNsMap & namespaces, XPathResultType * result_type=nullptr) const |
Evaluate an XPath expression. More... | |
double | eval_to_number (const ustring & xpath, XPathResultType * result_type=nullptr) const |
Evaluate an XPath expression. More... | |
ustring | eval_to_string (const ustring & xpath, const PrefixNsMap & namespaces, XPathResultType * result_type=nullptr) const |
Evaluate an XPath expression. More... | |
ustring | eval_to_string (const ustring & xpath, XPathResultType * result_type=nullptr) const |
Evaluate an XPath expression. More... | |
std::variant< NodeSet, bool, double, ustring > | eval_xpath (const ustring & xpath, const PrefixNsMap & namespaces={}) |
Evaluate an XPath expression. More... | |
std::variant< const_NodeSet, bool, double, ustring > | eval_xpath (const ustring & xpath, const PrefixNsMap & namespaces={}) const |
Evaluate an XPath expression. More... | |
NodeSet | find (const ustring & xpath) |
Find nodes from an XPath expression. More... | |
const_NodeSet | find (const ustring & xpath) const |
Find nodes from an XPath expression. More... | |
NodeSet | find (const ustring & xpath, const PrefixNsMap & namespaces) |
Find nodes from an XPath expression. More... | |
const_NodeSet | find (const ustring & xpath, const PrefixNsMap & namespaces) const |
Find nodes from an XPath expression. More... | |
NodeList | get_children (const ustring & name=ustring()) |
Obtain the list of child nodes. More... | |
const_NodeList | get_children (const ustring & name=ustring()) const |
Obtain the list of child nodes. More... | |
Node * | get_first_child (const ustring & name=ustring()) |
Get the first child of this node. More... | |
const Node * | get_first_child (const ustring & name=ustring()) const |
Get the first child of this node. More... | |
int | get_line () const |
Discover at what line number this node occurs in the XML file. More... | |
ustring | get_name () const |
Get the name of this node. More... | |
std::optional< ustring > | get_name2 () const |
Get the name of this node. More... | |
ustring | get_namespace_prefix () const |
Get the namespace prefix of this node. More... | |
std::optional< ustring > | get_namespace_prefix2 () const |
Get the namespace prefix of this node. More... | |
ustring | get_namespace_uri () const |
Get the namespace URI of this node. More... | |
std::optional< ustring > | get_namespace_uri2 () const |
Get the namespace URI of this node. More... | |
Node * | get_next_sibling () |
Get the next sibling for this node. More... | |
const Node * | get_next_sibling () const |
Get the next sibling for this node. More... | |
Element * | get_parent () |
Get the parent element for this node. More... | |
const Element * | get_parent () const |
Get the parent element for this node. More... | |
ustring | get_path () const |
Get the XPath of this node. More... | |
std::optional< ustring > | get_path2 () const |
Get the XPath of this node. More... | |
Node * | get_previous_sibling () |
Get the previous sibling for this node. More... | |
const Node * | get_previous_sibling () const |
Get the previous sibling for this node . More... | |
Node * | import_node (const Node * node, bool recursive=true) |
Import node(s) from another document under this node, without affecting the source node. More... | |
void | set_name (const ustring & name) |
Set the name of this node. More... | |
void | set_namespace (const ustring & ns_prefix) |
Set the namespace prefix used by the node. More... | |
Public Member Functions inherited from xmlpp::NonCopyable | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable (NonCopyable &&)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
NonCopyable & | operator= (NonCopyable &&)=delete |
Static Public Member Functions | |
static void | create_wrapper (_xmlNode * node) |
Construct the correct C++ instance for a given libxml C struct instance. More... | |
static void | free_wrappers (_xmlNode * node) |
Delete the C++ instance for a given libxml C struct instance, and also recursively destroy the C++ instances for any children. More... | |
static void | remove_node (Node * node) |
Remove a node and its children. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from xmlpp::NonCopyable | |
NonCopyable () noexcept | |
virtual | ~NonCopyable () |
Represents XML Nodes.
You should never new and delete Nodes. The Parser will create and manage them for you. Furthermore, Document and Element have methods for adding Nodes to a Document.
using xmlpp::Node::const_NodeList = std::list<const Node*> |
using xmlpp::Node::const_NodeSet = std::vector<const Node*> |
using xmlpp::Node::NodeList = std::list<Node*> |
using xmlpp::Node::NodeSet = std::vector<Node*> |
using xmlpp::Node::PrefixNsMap = std::map<ustring, ustring> |
A map of namespace prefixes to namespace URIs.
|
explicit |
xmlpp::internal_error | If node is nullptr . |
|
override |
Destructor.
Does not destroy the underlying xmlNode. The xmlNode is owned by a xmlDoc document. If you want to also destroy the xmlNode, use remove_node().
|
noexcept |
Access the underlying libxml implementation.
|
noexcept |
Access the underlying libxml implementation.
|
static |
Construct the correct C++ instance for a given libxml C struct instance.
This is only for use by the libxml++ implementation.
node | A pointer to an xmlNode or a "derived" struct, such as xmlDoc, xmlAttr, etc. |
bool xmlpp::Node::eval_to_boolean | ( | const ustring & | xpath, |
const PrefixNsMap & | namespaces, | ||
XPathResultType * | result_type = nullptr |
||
) | const |
Evaluate an XPath expression.
xpath | The XPath expression. | |
namespaces | A map of namespace prefixes to namespace URIs to be used while evaluating. | |
[out] | result_type | Result type of the XPath expression before conversion to boolean. If nullptr , the result type is not returned. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error |
bool xmlpp::Node::eval_to_boolean | ( | const ustring & | xpath, |
XPathResultType * | result_type = nullptr |
||
) | const |
Evaluate an XPath expression.
xpath | The XPath expression. | |
[out] | result_type | Result type of the XPath expression before conversion to boolean. If nullptr , the result type is not returned. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error |
double xmlpp::Node::eval_to_number | ( | const ustring & | xpath, |
const PrefixNsMap & | namespaces, | ||
XPathResultType * | result_type = nullptr |
||
) | const |
Evaluate an XPath expression.
xpath | The XPath expression. | |
namespaces | A map of namespace prefixes to namespace URIs to be used while evaluating. | |
[out] | result_type | Result type of the XPath expression before conversion to number. If nullptr , the result type is not returned. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error |
double xmlpp::Node::eval_to_number | ( | const ustring & | xpath, |
XPathResultType * | result_type = nullptr |
||
) | const |
Evaluate an XPath expression.
xpath | The XPath expression. | |
[out] | result_type | Result type of the XPath expression before conversion to number. If nullptr , the result type is not returned. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error |
ustring xmlpp::Node::eval_to_string | ( | const ustring & | xpath, |
const PrefixNsMap & | namespaces, | ||
XPathResultType * | result_type = nullptr |
||
) | const |
Evaluate an XPath expression.
xpath | The XPath expression. | |
namespaces | A map of namespace prefixes to namespace URIs to be used while evaluating. | |
[out] | result_type | Result type of the XPath expression before conversion to string. If nullptr , the result type is not returned. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error |
ustring xmlpp::Node::eval_to_string | ( | const ustring & | xpath, |
XPathResultType * | result_type = nullptr |
||
) | const |
Evaluate an XPath expression.
xpath | The XPath expression. | |
[out] | result_type | Result type of the XPath expression before conversion to string. If nullptr , the result type is not returned. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error |
std::variant<NodeSet, bool, double, ustring> xmlpp::Node::eval_xpath | ( | const ustring & | xpath, |
const PrefixNsMap & | namespaces = {} |
||
) |
Evaluate an XPath expression.
xpath | The XPath expression. |
namespaces | A map of namespace prefixes to namespace URIs to be used while evaluating. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error | If the result type is not nodeset, boolean, number or string. |
std::variant<const_NodeSet, bool, double, ustring> xmlpp::Node::eval_xpath | ( | const ustring & | xpath, |
const PrefixNsMap & | namespaces = {} |
||
) | const |
Evaluate an XPath expression.
xpath | The XPath expression. |
namespaces | A map of namespace prefixes to namespace URIs to be used while evaluating. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error | If the result type is not nodeset, boolean, number or string. |
Find nodes from an XPath expression.
xpath | The XPath of the nodes. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error | If the result type is not nodeset. |
const_NodeSet xmlpp::Node::find | ( | const ustring & | xpath | ) | const |
Find nodes from an XPath expression.
xpath | The XPath of the nodes. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error | If the result type is not nodeset. |
NodeSet xmlpp::Node::find | ( | const ustring & | xpath, |
const PrefixNsMap & | namespaces | ||
) |
Find nodes from an XPath expression.
xpath | The XPath of the nodes. |
namespaces | A map of namespace prefixes to namespace URIs to be used while finding. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error | If the result type is not nodeset. |
const_NodeSet xmlpp::Node::find | ( | const ustring & | xpath, |
const PrefixNsMap & | namespaces | ||
) | const |
Find nodes from an XPath expression.
xpath | The XPath of the nodes. |
namespaces | A map of namespace prefixes to namespace URIs to be used while finding. |
xmlpp::exception | If the XPath expression cannot be evaluated. |
xmlpp::internal_error | If the result type is not nodeset. |
|
static |
Delete the C++ instance for a given libxml C struct instance, and also recursively destroy the C++ instances for any children.
This is only for use by the libxml++ implementation.
node | A pointer to an xmlNode or a "derived" struct, such as xmlDoc, xmlAttr, etc. |
Obtain the list of child nodes.
You may optionally obtain a list of only the child nodes which have a certain name.
name | The names of the child nodes to get. If you do not specify a name, then the list will contain all nodes, regardless of their names. |
const_NodeList xmlpp::Node::get_children | ( | const ustring & | name = ustring() | ) | const |
Obtain the list of child nodes.
You may optionally obtain a list of only the child nodes which have a certain name.
name | The names of the child nodes to get. If you do not specify a name, then the list will contain all nodes, regardless of their names. |
Get the first child of this node.
You may optionally get the first child node which has a certain name.
name | The name of the requested child node, or an empty string. |
nullptr
if no child node (with the specified name) exists.Get the first child of this node.
You may optionally get the first child node which has a certain name.
name | The name of the requested child node, or an empty string. |
nullptr
if no child node (with the specified name) exists.int xmlpp::Node::get_line | ( | ) | const |
Discover at what line number this node occurs in the XML file.
ustring xmlpp::Node::get_name | ( | ) | const |
std::optional<ustring> xmlpp::Node::get_name2 | ( | ) | const |
ustring xmlpp::Node::get_namespace_prefix | ( | ) | const |
Get the namespace prefix of this node.
std::optional<ustring> xmlpp::Node::get_namespace_prefix2 | ( | ) | const |
Get the namespace prefix of this node.
ustring xmlpp::Node::get_namespace_uri | ( | ) | const |
Get the namespace URI of this node.
std::optional<ustring> xmlpp::Node::get_namespace_uri2 | ( | ) | const |
Get the namespace URI of this node.
Node* xmlpp::Node::get_next_sibling | ( | ) |
Get the next sibling for this node.
nullptr
if the node has no next sibling. const Node* xmlpp::Node::get_next_sibling | ( | ) | const |
Get the next sibling for this node.
nullptr
if the node has no next sibling. Element* xmlpp::Node::get_parent | ( | ) |
Get the parent element for this node.
nullptr
if the node has no parent element. const Element* xmlpp::Node::get_parent | ( | ) | const |
Get the parent element for this node.
nullptr
if the node has no parent element. ustring xmlpp::Node::get_path | ( | ) | const |
std::optional<ustring> xmlpp::Node::get_path2 | ( | ) | const |
Get the XPath of this node.
Node* xmlpp::Node::get_previous_sibling | ( | ) |
Get the previous sibling for this node.
nullptr
if the node has no previous sibling. const Node* xmlpp::Node::get_previous_sibling | ( | ) | const |
Get the previous sibling for this node .
nullptr
if the node has no previous sibling. Import node(s) from another document under this node, without affecting the source node.
If the imported node is an attribute node, and this node has an attribute with the same name as the imported attribute, the existing attribute is destroyed before the imported attribute is added. Any pointer to a destroyed attribute node becomes invalid.
node | The node to copy and insert under the current node. |
recursive | Whether to import the child nodes also. Defaults to true. |
xmlpp::exception |
|
static |
Remove a node and its children.
The node is disconnected from its parent. The underlying libxml xmlNode instances are also removed.
node | The node to remove. This Node and all its descendants will be deleted and therefore unusable after calling this method. |
void xmlpp::Node::set_name | ( | const ustring & | name | ) |
Set the name of this node.
name | The new name for the node. |
void xmlpp::Node::set_namespace | ( | const ustring & | ns_prefix | ) |
Set the namespace prefix used by the node.
If no such namespace prefix has been declared then this method will throw an exception.
ns_prefix | The namespace prefix. |
xmlpp::exception |