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

#include <Node.hpp>

Public Types

typedef std::vector< Node * > Children
 
typedef Children::iterator child_iterator
 
typedef Children::const_iterator const_child_iterator
 
typedef std::vector< Attribute * > Attributes
 
typedef Attributes::iterator attribute_iterator
 
typedef Attributes::const_iterator const_attribute_iterator
 
typedef SortedVector< Namespace, NamespaceByName, std::string > namespace_container
 
typedef namespace_container::iterator namespace_iterator
 
typedef namespace_container::const_iterator const_namespace_iterator
 

Public Member Functions

 Node (const char *name)
 
virtual ~Node ()
 
const char * getName () const
 
const std::string & getNameAsString () const
 
const NodegetParent () const
 
NodegetParent ()
 
const AttributegetAttribute (const char *name, const bool exceptionWhenNotFound=true) const noexcept(false)
 
const TextgetText () const
 
const NamespacegetNamespace () const
 
child_iterator child_begin ()
 
const_child_iterator child_begin () const
 
const_attribute_iterator attribute_begin () const
 
const_namespace_iterator namespace_begin () const
 
child_iterator child_end ()
 
const_child_iterator child_end () const
 
int child_size () const
 
const_attribute_iterator attribute_end () const
 
const_namespace_iterator namespace_end () const
 
int namespace_size () const
 
const Nodefind (const char *childName, const bool exceptionWhenNotFound=true) const noexcept(false)
 
xml::AttributecreateAttribute (const char *name, const char *value, const Namespace *_namespace=NULL)
 
xml::AttributecreateAttribute (const char *name, const std::string &value, const Namespace *_namespace=NULL)
 
xml::AttributecreateAttribute (const char *name, const int value, const Namespace *_namespace=NULL)
 
xml::AttributecreateAttribute (const char *name, const S64 *value, const Namespace *_namespace=NULL)
 
xml::AttributecreateAttribute (const char *name, const U64 *value, const Namespace *_namespace=NULL)
 
xml::TextcreateText (const char *text) noexcept(false)
 
xml::TextcreateText (const std::string &text) noexcept(false)
 
NodecreateChild (const char *name)
 
const NamespacecreateNamespace (const char *name, const char *reference) noexcept(false)
 
const NamespacecreateNamespace (const std::string &name, const char *reference) noexcept(false)
 
void setNamespace (const Namespace *_namespace)
 
Namespacenamespace_find (const char *name, const bool exceptionWhenNotFound=true) noexcept(false)
 
Namespacenamespace_find (const std::string &name, const bool exceptionWhenNotFound=true) noexcept(false)
 
const Namespacenamespace_find (const char *name, const bool exceptionWhenNotFound=true) const noexcept(false)
 
const Namespacenamespace_find (const std::string &name, const bool exceptionWhenNotFound=true) const noexcept(false)
 
void clear ()
 
std::string asString () const
 

Static Public Member Functions

static Nodenode (child_iterator &ii)
 
static const Nodenode (const_child_iterator &ii)
 
static const Attributeattribute (const_attribute_iterator &ii)
 
static const Namespacexnamespace (const_namespace_iterator &ii)
 

Static Protected Member Functions

static Attributeattribute (attribute_iterator &ii)
 

Friends

class Parser
 
class Allocator< Node >
 
class XPath
 
class Decompressor
 
class Compiler
 

Detailed Description

Nodo de documento XML.

Cada nodo puede tener una serie indeterminada de atributos y nodos hijos. Por ejemplo:

<xvc HeartBeat="20000">
<broadcast>
<INetAddress Address="204.152.65.15" Port="2000"/>
<INetAddress Address="204.152.65.47" Port="2002"/>
</broadcast>
<ethernet Mode="raw" VirtualAddress="1.1.1.100">
<Input Device="/dev/qfe" PhysicalAccessPoint="2" MAC="8:0:20:9e:ee:21"/>
<Output Device="/dev/qfe" PhysicalAccessPoint="2" MAC="8:0:20:9e:ee:c9"/>
</ethernet>
</xvc>

El nodo xvc tiene un atributo (ver Attribute) llamado HeartBeat y dos nodos hijos (broadcast y ethernet).

Member Typedef Documentation

◆ attribute_iterator

typedef Attributes::iterator anna::xml::Node::attribute_iterator

Iterador sobre la lista de atributos no modificables.

◆ Attributes

typedef std::vector<Attribute*> anna::xml::Node::Attributes

Estructura usada para guardar los attributos

◆ child_iterator

typedef Children::iterator anna::xml::Node::child_iterator

Iterador sobre lista de nodos

◆ Children

typedef std::vector<Node*> anna::xml::Node::Children

Estructura usada para guardar los nodos hijos

◆ const_attribute_iterator

typedef Attributes::const_iterator anna::xml::Node::const_attribute_iterator

Iterador sobre la lista de atributos no modificables

◆ const_child_iterator

typedef Children::const_iterator anna::xml::Node::const_child_iterator

Iterador sobre lista de nodos no modificables

◆ const_namespace_iterator

◆ namespace_container

typedef SortedVector<Namespace, NamespaceByName, std::string> anna::xml::Node::namespace_container

◆ namespace_iterator

Constructor & Destructor Documentation

◆ Node()

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

Constructor.

Parameters
nameNombre del nodo.

◆ ~Node()

virtual anna::xml::Node::~Node ( )
virtual

Destructor.

Member Function Documentation

◆ asString()

std::string anna::xml::Node::asString ( ) const

Devuelve una cadena con toda la información relevante de esta instancia.

Returns
Una cadena con toda la información relevante de esta instancia.

◆ attribute() [1/2]

static const Attribute* anna::xml::Node::attribute ( const_attribute_iterator ii)
inlinestatic

Devuelve la refencia al atributo sobre el que se encuentra el iterador pasado como parámetro.

Parameters
iiIterador que estamos recorriendo.
Returns
La refencia al atributo sobre el que se encuentra el iterador pasado como parámetro.
413 { return *ii; }

◆ attribute() [2/2]

static Attribute* anna::xml::Node::attribute ( attribute_iterator ii)
inlinestaticprotected

Devuelve la refencia al atributo sobre el que se encuentra el iterador pasado como parámetro.

Parameters
iiIterador que estamos recorriendo.
Returns
La refencia al atributo sobre el que se encuentra el iterador pasado como parámetro.
428 { return *ii; }
Here is the call graph for this function:

◆ attribute_begin()

const_attribute_iterator anna::xml::Node::attribute_begin ( ) const
inline

Devuelve un iterador al comienzo de la lista de atributos no modificables.

Returns
Un iterador al comienzo de la lista de atributos no modificables.
185 { return a_attributes.begin(); }

◆ attribute_end()

const_attribute_iterator anna::xml::Node::attribute_end ( ) const
inline

Devuelve un iterador al final de la lista de atributos no modificables.

Returns
Un iterador al final de la lista de atributos no modificables.
218 { return a_attributes.end(); }

◆ child_begin() [1/2]

child_iterator anna::xml::Node::child_begin ( )
inline

Devuelve un iterador al comienzo de la lista de nodo hijos.

A continuacion presentamos un ejemplo de como se recorreria lista de nodos hijos de una determinado nodo.

using namespace anna::xml;
Node* theNode = ... <establece un valor correcto> ...
Node* theChild;
for (Node::iterator ii = theNode->begin (), maxii = theNode->end (); ii != maxii; ii ++) {
theChild = Node::node (ii);
.... <Procesar el hijo> ....
}
Returns
Un iterador al comienzo de la lista de nodo hijos.
154 { return a_children.begin(); }

◆ child_begin() [2/2]

const_child_iterator anna::xml::Node::child_begin ( ) const
inline

Devuelve un iterador al comienzo de la lista de nodos hijos no modificables.

A continuacion presentamos un ejemplo de como se recorreria lista de nodos hijos de una determinado nodo no modificable.

using namespace anna::xml;
const Node* theNode = ... <establece un valor correcto> ...
const Node* theChild;
for (Node::const_iterator ii = theNode->begin (), maxii = theNode->end (); ii != maxii; ii ++) {
theChild = Node::node (ii);
.... <Procesar el hijo> ....
}
Returns
Un iterador al comienzo de la lista de nodo hijos no modificables.
179 { return a_children.begin(); }

◆ child_end() [1/2]

child_iterator anna::xml::Node::child_end ( )
inline

Devuelve un iterador al final de la lista de nodo hijos.

Returns
Un iterador al final de la lista de nodo hijos.
See also
child_begin
199 { return a_children.end(); }

◆ child_end() [2/2]

const_child_iterator anna::xml::Node::child_end ( ) const
inline

Devuelve un iterador al final de la lista de nodo hijos no modificables.

Returns
Un iterador al final de la lista de nodo hijos no modificables.
See also
#begin
206 { return a_children.end(); }

◆ child_size()

int anna::xml::Node::child_size ( ) const
inline

Devuelve el número de hijos definidos.

Returns
el número de hijos definidos.
212 { return a_children.size(); }

◆ clear()

void anna::xml::Node::clear ( )

Libera todos los componentes (atributos, namespaces y nodos hijos) asociados a este nodo.

◆ createAttribute() [1/5]

xml::Attribute* anna::xml::Node::createAttribute ( const char *  name,
const char *  value,
const Namespace _namespace = NULL 
)

Crea un atributo que depende de este nodo.

Parameters
nameNombre del atributo.
valueValor asociado al atributo.
_namespaceReferencia al namespace al que pertenece el atributo. Puede ser NULL.
Returns
La instancia del nuevo atributo.

◆ createAttribute() [2/5]

xml::Attribute* anna::xml::Node::createAttribute ( const char *  name,
const std::string &  value,
const Namespace _namespace = NULL 
)
inline

Crea un atributo que depende de este nodo.

Parameters
nameNombre del atributo.
valueValor asociado al atributo.
_namespaceReferencia al namespace al que pertenece el atributo. Puede ser NULL.
Returns
La instancia del nuevo atributo.
262  {
263  return createAttribute(name, value.c_str(), _namespace);
264  }
xml::Attribute * createAttribute(const char *name, const char *value, const Namespace *_namespace=NULL)
Here is the call graph for this function:

◆ createAttribute() [3/5]

xml::Attribute* anna::xml::Node::createAttribute ( const char *  name,
const int  value,
const Namespace _namespace = NULL 
)
inline

Crea un atributo que depende de este nodo.

Parameters
nameNombre del atributo.
valueValor asociado al atributo.
_namespaceReferencia al namespace al que pertenece el atributo. Puede ser NULL.
Returns
La instancia del nuevo atributo.
273  {
274  return createAttribute(name, anna::functions::asString(value), _namespace);
275  }
xml::Attribute * createAttribute(const char *name, const char *value, const Namespace *_namespace=NULL)
static std::string asString(const int number)
Here is the call graph for this function:

◆ createAttribute() [4/5]

xml::Attribute* anna::xml::Node::createAttribute ( const char *  name,
const S64 value,
const Namespace _namespace = NULL 
)
inline

Crea un atributo que depende de este nodo.

Parameters
nameNombre del atributo.
valueValor asociado al atributo. Pasamos como puntero para que no se creen ambiguedades con el codigo escrito hasta ahora.
_namespaceReferencia al namespace al que pertenece el atributo. Puede ser NULL.
Returns
La instancia del nuevo atributo.
285  {
286  return createAttribute(name, anna::functions::asString(*value), _namespace);
287  }
xml::Attribute * createAttribute(const char *name, const char *value, const Namespace *_namespace=NULL)
static std::string asString(const int number)
Here is the call graph for this function:

◆ createAttribute() [5/5]

xml::Attribute* anna::xml::Node::createAttribute ( const char *  name,
const U64 value,
const Namespace _namespace = NULL 
)
inline

Crea un atributo que depende de este nodo.

Parameters
nameNombre del atributo.
valueValor asociado al atributo. Pasamos como puntero para que no se creen ambiguedades con el codigo escrito hasta ahora.
_namespaceReferencia al namespace al que pertenece el atributo. Puede ser NULL.
Returns
La instancia del nuevo atributo.
297  {
298  return createAttribute(name, anna::functions::asString(*value), _namespace);
299  }
xml::Attribute * createAttribute(const char *name, const char *value, const Namespace *_namespace=NULL)
static std::string asString(const int number)
Here is the call graph for this function:

◆ createChild()

Node* anna::xml::Node::createChild ( const char *  name)

Crea un nuevo nodo que depende de este.

Parameters
nameNombre del nodo hijo.

◆ createNamespace() [1/2]

const Namespace* anna::xml::Node::createNamespace ( const char *  name,
const char *  reference 
)
inlinenoexcept

Crea un nuevo namespace (si procede) que podemos usar para asignar a los distintos nodos. Si el nodo ya existe y la referencia no coincide con la registrada se obtendrá una excepción.

Parameters
nameNombre del nuevo namespace.
referenceURI de la que obtener las definiciones.
Returns
La instancia de un namespace con los parámetros indicados.
329  {
330  std::string _name(name);
331  return createNamespace(_name, reference);
332  }
const Namespace * createNamespace(const char *name, const char *reference) noexcept(false)
Definition: Node.hpp:329

◆ createNamespace() [2/2]

const Namespace* anna::xml::Node::createNamespace ( const std::string &  name,
const char *  reference 
)
noexcept

Crea un nuevo namespace (si procede) que podemos usar para asignar a los distintos nodos. Si el nodo ya existe y la referencia no coincide con la registrada se obtendrá una excepción.

Parameters
nameNombre del nuevo namespace.
referenceURI de la que obtener las definiciones.
Returns
La instancia de un namespace con los parámetros indicados.

◆ createText() [1/2]

xml::Text* anna::xml::Node::createText ( const char *  text)
noexcept

Crea el texto asociado a este nodo.

Parameters
textcontain Valor del texto asociado a este nodo.
Returns
La instancia del nuevo texto.

◆ createText() [2/2]

xml::Text* anna::xml::Node::createText ( const std::string &  text)
inlinenoexcept

Crea el texto asociado a este nodo.

Parameters
textcontain Valor del texto asociado a este nodo.
Returns
La instancia del nuevo texto.
313 { return createText(text.c_str()); }
xml::Text * createText(const char *text) noexcept(false)
Here is the call graph for this function:

◆ find()

const Node* anna::xml::Node::find ( const char *  childName,
const bool  exceptionWhenNotFound = true 
) const
noexcept

Busca un nodo sucesor directo de este cuyo nombre coincida con el nombre recibido como parámetro.

Parameters
childNameNombre del nodo hijo que estamos buscando.
exceptionWhenNotFoundIndica el comportamiento en caso de no encontrar ningun nodo hijo que coincida con el nombre buscado.
Returns
Referencia al nodo hijo que coincide con el nombre buscado. Si exceptionWhenNotFound es false y ninguno de los hijos cumple con la busqueda sera NULL.

◆ getAttribute()

const Attribute* anna::xml::Node::getAttribute ( const char *  name,
const bool  exceptionWhenNotFound = true 
) const
noexcept

Devuelve la referencia al atributo que coincide con el nombre dado, si no existe lanzara una excepcion de ejecucion.

Parameters
nameNombre del atributo buscado.
exceptionWhenNotFoundIndica el comportamiento en caso de no encontrar el atributo que coincida con el nombre buscado.
Returns
La referencia al atributo que coincide con el nombre dado.

◆ getName()

const char* anna::xml::Node::getName ( void  ) const
inline

Devuelve el nombre del nodo.

Returns
El nombre del nodo.
89 { return a_name.c_str(); }

◆ getNameAsString()

const std::string& anna::xml::Node::getNameAsString ( ) const
inline

Devuelve el nombre del nodo.

Returns
El nombre del nodo.
95 { return a_name; }

◆ getNamespace()

const Namespace* anna::xml::Node::getNamespace ( ) const
inline

Devuelve el namespace asociado a este nodo. Puede ser NULL.

Returns
el namespace asociado a este nodo. Puede ser NULL.
129 { return a_namespace; }

◆ getParent() [1/2]

const Node* anna::xml::Node::getParent ( ) const
inline

Devuelve la referencia al nodo predecesor de este nodo. Pueder ser NULL.

Returns
La referencia al nodo predecesor de este nodo. Pueder ser NULL.
101 { return a_parent; }

◆ getParent() [2/2]

Node* anna::xml::Node::getParent ( )
inline

Devuelve la referencia al nodo predecesor de este nodo. Pueder ser NULL.

Returns
La referencia al nodo predecesor de este nodo. Pueder ser NULL.
107 { return const_cast <Node*>(a_parent); }
Node(const char *name)
Here is the call graph for this function:

◆ getText()

const Text* anna::xml::Node::getText ( ) const
inline

Devuelve la referencia al texto asociado a este nodo. Pueder ser NULL.

Returns
La referencia al texto asociado a este nodo. Pueder ser NULL.
123 { return a_text; }

◆ namespace_begin()

const_namespace_iterator anna::xml::Node::namespace_begin ( ) const
inline

Devuelve un iterador al comienzo de la lista de namespaces no modificables.

Returns
Un iterador al comienzo de la lista de namespaces no modificables.
191 { return a_root->a_namespaces->begin(); }

◆ namespace_end()

const_namespace_iterator anna::xml::Node::namespace_end ( ) const
inline

Devuelve un iterador al comienzo de la lista de namespaces no modificables.

Returns
Un iterador al comienzo de la lista de namespaces no modificables.
224 { return a_root->a_namespaces->end(); }

◆ namespace_find() [1/4]

Namespace* anna::xml::Node::namespace_find ( const char *  name,
const bool  exceptionWhenNotFound = true 
)
inlinenoexcept

Devuelve la instancia del namespace que coincide con el nombre recibido como parámetro. Puede ser NULL.

Returns
la instancia del namespace que coincide con el nombre recibido como parámetro. Puede ser NULL.
354  {
355  const std::string _name(name);
356  return namespace_find(_name, exceptionWhenNotFound);
357  }
Namespace * namespace_find(const char *name, const bool exceptionWhenNotFound=true) noexcept(false)
Definition: Node.hpp:354

◆ namespace_find() [2/4]

Namespace* anna::xml::Node::namespace_find ( const std::string &  name,
const bool  exceptionWhenNotFound = true 
)
noexcept

Devuelve la instancia del namespace que coincide con el nombre recibido como parámetro. Puede ser NULL.

Returns
la instancia del namespace que coincide con el nombre recibido como parámetro. Puede ser NULL.

◆ namespace_find() [3/4]

const Namespace* anna::xml::Node::namespace_find ( const char *  name,
const bool  exceptionWhenNotFound = true 
) const
inlinenoexcept

Devuelve la instancia del namespace que coincide con el nombre recibido como parámetro. Puede ser NULL.

Returns
la instancia del namespace que coincide con el nombre recibido como parámetro. Pueder ser NULL.
369  {
370  return const_cast <Node*>(this)->namespace_find(name, exceptionWhenNotFound);
371  }
Node(const char *name)
Namespace * namespace_find(const char *name, const bool exceptionWhenNotFound=true) noexcept(false)
Definition: Node.hpp:354
Here is the call graph for this function:

◆ namespace_find() [4/4]

const Namespace* anna::xml::Node::namespace_find ( const std::string &  name,
const bool  exceptionWhenNotFound = true 
) const
inlinenoexcept

Devuelve la instancia del namespace que coincide con el nombre recibido como parámetro. Puede ser NULL.

Returns
la instancia del namespace que coincide con el nombre recibido como parámetro. Pueder ser NULL.
377  {
378  return const_cast <Node*>(this)->namespace_find(name, exceptionWhenNotFound);
379  }
Node(const char *name)
Namespace * namespace_find(const char *name, const bool exceptionWhenNotFound=true) noexcept(false)
Definition: Node.hpp:354
Here is the call graph for this function:

◆ namespace_size()

int anna::xml::Node::namespace_size ( ) const
inline

Devuelve el número de namespace definidos.

Returns
el número de namespace definidos.
230 { return a_root->a_namespaces->size(); }
Here is the call graph for this function:

◆ node() [1/2]

static Node* anna::xml::Node::node ( child_iterator ii)
inlinestatic

Devuelve la refencia al nodo sobre el que se encuentra el iterador pasado como parámetro.

Parameters
iiIterador que estamos recorriendo.
Returns
La refencia al nodo sobre el que se encuentra el iterador pasado como parámetro.
399 { return *ii; }

◆ node() [2/2]

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

Devuelve la refencia al nodo sobre el que se encuentra el iterador pasado como parámetro.

Parameters
iiIterador que estamos recorriendo.
Returns
La refencia al nodo sobre el que se encuentra el iterador pasado como parámetro.
406 { return *ii; }

◆ setNamespace()

void anna::xml::Node::setNamespace ( const Namespace _namespace)
inline

Establece el namespace asociado a este nodo.

Parameters
_namespaceInstancia del namespace que vamos a asociar al nodo.
348 { a_namespace = _namespace; }

◆ xnamespace()

static const Namespace* anna::xml::Node::xnamespace ( const_namespace_iterator ii)
inlinestatic

Devuelve la refencia al namespace sobre el que se encuentra el iterador pasado como parámetro.

Parameters
iiIterador que estamos recorriendo.
Returns
La refencia al namespace sobre el que se encuentra el iterador pasado como parámetro.
420 { return namespace_container::data(ii);; }
static T * data(iterator ii)
Definition: SortedVector.hpp:132
Here is the call graph for this function:

Friends And Related Function Documentation

◆ Allocator< Node >

friend class Allocator< Node >
friend

◆ Compiler

friend class Compiler
friend

Representacion de un compilador de HTML.

See also
xml::Compiler

◆ Decompressor

friend class Decompressor
friend

◆ Parser

friend class Parser
friend

◆ XPath

friend class XPath
friend

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