ANNA Suite  2020b
Multipurpose development suite for Telco applications
Classes | Public Member Functions | Static Public Member Functions | Friends | List of all members
anna::xml::XPath Class Reference

#include <XPath.hpp>

Inheritance diagram for anna::xml::XPath:
Inheritance graph
[legend]
Collaboration diagram for anna::xml::XPath:
Collaboration graph
[legend]

Classes

struct  Mode
 

Public Member Functions

 XPath (const char *name)
 
void apply (const Document &document, const char *expression, const int mode=Mode::Simple) noexcept(false)
 
bool match (const Document &document, const char *expression, const int mode=Mode::Simple) noexcept(false)
 
const Nodefind (const Document &document, const char *expression, const int mode=Mode::Full, const Exception::Mode::_v emode=Exception::Mode::Throw) noexcept(false)
 
bool isEmpty () const
 
int size () const
 
Node::const_child_iterator node_begin () const
 
Node::const_child_iterator node_end () const
 

Static Public Member Functions

static const Nodenode (Node::const_child_iterator &ii)
 

Friends

struct ConfigSkeleton
 

Detailed Description

XPath is a language to navigate an XML document.

See also
https://www.w3schools.com/xml/xpath_intro.asp
http://www.whoishostingthis.com/resources/xpath

Constructor & Destructor Documentation

◆ XPath()

anna::xml::XPath::XPath ( const char *  name)

Constructor.

Parameters
nameNombre lógico de esta instancia.

Member Function Documentation

◆ apply()

void anna::xml::XPath::apply ( const Document document,
const char *  expression,
const int  mode = Mode::Simple 
)
noexcept

Aplica la expresión XPath sobre el documento recibido como parámetro. Los nodos del documento XML seleccionados por XPath se recogeran con los métodos node_begin, node_end y node.

Parameters
documentDocumento XML sobre el que aplicar la expresión.
expressionExpresión XPath a aplicar sobre el documento XML.
modeUna combinación de XPath::Mode::_v.
Warning
La instancia del documento debe estar correctamente inicializada.
See also
Document::initialize

◆ find()

const Node* anna::xml::XPath::find ( const Document document,
const char *  expression,
const int  mode = Mode::Full,
const Exception::Mode::_v  emode = Exception::Mode::Throw 
)
noexcept

Aplica la expresión XPath sobre el documento recibido como parámetro y devuelve el primer nodo que cumple con la expresión.

Parameters
documentDocumento XML al que aplicar la sentencia.
expressionExpresión XPath a aplicar.
modeModo de interpretación de los resultados. Si valor XPath::Mode::Namespace analizará el documento XML para obtener los namespaces a usar.
emodeModo de actuar en caso de que no haya ningún nodo que cumpla la expresión.
Warning
Si no hay ningún nodo que cumpla la expresión devolverá una excepción.

◆ isEmpty()

bool anna::xml::XPath::isEmpty ( void  ) const
inline

Devuelve true si existen nodos que cumplieron la condición de apply o false en otro caso.

Returns
true si existen nodos que cumplieron la condición de apply o false en otro caso.
100 { return a_root->a_children.size() == 0; }
Node * a_root
Definition: Parser.hpp:117

◆ match()

bool anna::xml::XPath::match ( const Document document,
const char *  expression,
const int  mode = Mode::Simple 
)
noexcept

Aplica la expresión XPath sobre el documento recibido como parámetro y devuelve true si hay algún nodo que cumpla la expresión o false en otro caso. Es mucho más rápido que el método apply, porque no dispondremos de los nodos que cumplen la condición.

Parameters
documentDocumento XML al que aplicar la sentencia.
expressionExpresión XPath a aplicar.
modeModo de interpretación de los resultados. Si valor XPath::Mode::Namespace analizará el documento XML para obtener los namespaces a usar.
Returns
true si algún nodo del documento que cumpla la expressión o false en otro caso.

◆ node()

static const Node* anna::xml::XPath::node ( Node::const_child_iterator ii)
inlinestatic

Devuelve la instancia del nodo apuntado por el iterador recibido como parámetro.

Returns
la instancia del nodo apuntado por el iterador recibido como parámetro.
124 { return xml::Node::node(ii); }
static Node * node(child_iterator &ii)
Definition: Node.hpp:399
Here is the call graph for this function:

◆ node_begin()

Node::const_child_iterator anna::xml::XPath::node_begin ( ) const
inline

Devuelve el primer nodo del documento que cumple la expresión indicada al invocar al método apply.

Returns
El primer nodo del documento que cumple la expresión indicada al invocar al método apply.
112 { return a_root->child_begin(); }
Node * a_root
Definition: Parser.hpp:117
child_iterator child_begin()
Definition: Node.hpp:154
Here is the call graph for this function:

◆ node_end()

Node::const_child_iterator anna::xml::XPath::node_end ( ) const
inline

Devuelve el final de la lista de nodos que cumplen la expresión indicada al invocar al método apply.

Returns
El final de la lista de nodos que cumplen la expresión indicada al invocar al método apply.
118 { return a_root->child_end(); }
Node * a_root
Definition: Parser.hpp:117
child_iterator child_end()
Definition: Node.hpp:199
Here is the call graph for this function:

◆ size()

int anna::xml::XPath::size ( ) const
inline

Devuelve el número de nodos que han sido seleccionados al invocar al método apply.

Returns
El número de nodos que han sido seleccionados al invocar al método apply.
106 { return a_root->a_children.size(); }
Node * a_root
Definition: Parser.hpp:117

Friends And Related Function Documentation

◆ ConfigSkeleton

friend struct ConfigSkeleton
friend

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