OpenAlbum 1.0.b
Métodos públicos

Referencia de la Clase Parser

Parsea ficheros XML. Más...

#include <parser.h>

Lista de todos los miembros.

Métodos públicos

 Parser (const std::string &path, QWidget *parent_)
ticpp::Element * root ()
std::string get_content (const ticpp::Element *element) const
std::string get_attribute (const std::string &name, const ticpp::Element *element) const
template<typename T >
bool get_attribute (const std::string &name, const ticpp::Element *element, T *value) const
ticpp::Element * find (const std::string &name, ticpp::Element *element=0)
bool find (const std::string &name, std::vector< ticpp::Element * > &v, ticpp::Element *element=0)
bool add_element (const std::string &name, ticpp::Element *father=0)
template<typename T >
bool set_attribute (const std::string &name, const T &value, ticpp::Element *element)
template<typename T >
bool set_content (const T &value, ticpp::Element *element)
bool save_document (const char *path)

Descripción detallada

Parsea ficheros XML.

Autor:
Manuel Jesús de la Calle Brihuega
Versión:
1.0

Clase que se utiliza para parsear ficheros XML. Tratamos de que todos los datos del álbum esten separados del código. De esta manera se consigue que los hipotéticos diseñadores puedan cambiar parámetros de las plantillas sin saber programar ni recompilar el código.

Se utilizará generalmente para leer aunque también se puede escribir en ficheros XML con esta clase (Guardar álbum, por ejemplo, podría usar esta característica).

Ejemplo de uso:

Si tenemos un fichero xml con esta estructura:

                <portada x="500" y="200" fondo="background_invierno" id="invierno">
                <areas_texto>
                        <area_texto x="100" y="50" pos_x="20" pos_y="94" orientacion="vertical" />
                        <area_texto x="20" y="328" pos_x="115" pos_y="16" orientacion="horizontal"/>
                </areas_texto>
                <areas_imagen>
                        <area_imagen x="15" y="20" pos_x="10" pos_y="20" />
                </areas_imagen>
                </portada>      

Podemos parsearlo de la siguiente forma:

                Parser parser("portada.xml");
        
                ticpp::Element* element = parser.root();
        

                int tamx, tamy, areax, areay, areaposx, areaposy;
                string fondo, id, orientacion;
        
                cout << endl << "PRUEBA DEL PARSER" << endl;
                cout << "=================" << endl << endl;
        
                // Atributos
                parser.get_attribute("x", element, &tamx);
                parser.get_attribute("y", element, &tamy);
                id = parser.get_attribute("id", element);
                fondo = parser.get_attribute("fondo", element);
        
                cout << "Atributos:" << endl;
                cout << "x = " << tamx << endl;
                cout << "y = " << tamy << endl;
                cout << "id = " << id << endl;
                cout << "fondo = " << fondo << endl << endl;

        
                // Areas de texto
                vector<ticpp::Element*> areas;
        
                parser.find("area_texto", areas, parser.find("areas_texto"));
        
                for(vector<ticpp::Element*>::iterator i = areas.begin(); i != areas.end(); i++){
                
                        parser.get_attribute("x", *i, &areax);
                        parser.get_attribute("y", *i, &areay);
                        parser.get_attribute("pos_x", *i, &areaposx);
                        parser.get_attribute("pos_y", *i, &areaposy);
                        orientacion=parser.get_attribute("orientacion", *i);
                }
        
                ...

Definición en la línea 97 del archivo parser.h.


Documentación del constructor y destructor

Parser::Parser ( const std::string &  path,
QWidget *  parent_ 
)

Constructor

Carga el fichero xml indicado por la ruta

Parámetros:
pathRuta del fichero xml a cargar

Definición en la línea 8 del archivo parser.cpp.


Documentación de las funciones miembro

bool Parser::add_element ( const std::string &  name,
ticpp::Element *  father = 0 
)

Añade el elemento dado como hijo de otro también indicado.

Parámetros:
nameNombre del elemento a añadir
fatherPadre del elemento a añadir. Si se omite se toma por defecto el elemennto raíz.
Devuelve:
true si la operación tiene éxito, false en caso contrario

Definición en la línea 110 del archivo parser.cpp.

ticpp::Element * Parser::find ( const std::string &  name,
ticpp::Element *  element = 0 
)

Busca y devuelve el primer elemento a partir de un padre con el nombre dado

Parámetros:
nameNombre del elemento a buscar
elementElemento padre desde el que se realizará la búsqueda. Si se omite, se tomará la raíz, es decir, se buscará desde el principio del documento XML.

Definición en la línea 62 del archivo parser.cpp.

bool Parser::find ( const std::string &  name,
std::vector< ticpp::Element * > &  v,
ticpp::Element *  element = 0 
)

Busca e inserta en el vector dado los elementos que coincidan con el nombre indicado

Parámetros:
nameNombre de los elementos a buscar
vVector de elementos donde se gardarán los resultados coincidentes
elementElemento padre a partir del cual se realiza la búsqueda. Si se omite se tomará la raíz. Es decir, se buscará desde el principio del documento XML.
Devuelve:
true si la operación tiene éxito, false, en caso contrario

Definición en la línea 93 del archivo parser.cpp.

std::string Parser::get_attribute ( const std::string &  name,
const ticpp::Element *  element 
) const

Consultor

Obtiene el atributo en forma de cadena del nombre indicado del elemento dado

Parámetros:
nameNombre del atributo cuyo valor se quiere consultar
elementElemento del que se quiere saber su atributo
Devuelve:
Cadena con el valor del atributo

Definición en la línea 37 del archivo parser.cpp.

template<typename T >
bool Parser::get_attribute ( const std::string &  name,
const ticpp::Element *  element,
T *  value 
) const [inline]

Consultor

Obtiene el atributo en forma del tipo deseado del nombre indicado del elemento dado

Parámetros:
nameNombre del atributo cuyo valor se quiere consultar
elementElemento del que se quiere consultar el atributo
valueVariable en la que se quiere guardar el valor del atributo
Devuelve:
true si la operación ha tenido éxito, false en caso contrario

Definición en la línea 149 del archivo parser.h.

std::string Parser::get_content ( const ticpp::Element *  element) const

Consultor

Accede al contenido de texto de un elemento del fichero xml

Parámetros:
elementElemento del que se quiere consultar su contenido
Devuelve:
Contenido del elemento

Definición en la línea 27 del archivo parser.cpp.

ticpp::Element * Parser::root ( )

Consultor

Devuelve el elemento raíz del xml.

Devuelve:
Elemento raíz del fichero XML, a partir de él, cuelgan todos los demás.

Definición en la línea 22 del archivo parser.cpp.

bool Parser::save_document ( const char *  path)

Guarda el documento con las modificaciones realizadas

Parámetros:
pathruta del fichero a guardar
Devuelve:
true si la operación tiene éxito, false en caso contrario

Definición en la línea 123 del archivo parser.cpp.

template<typename T >
bool Parser::set_attribute ( const std::string &  name,
const T &  value,
ticpp::Element *  element 
) [inline]

Establece un parámetro al elemento dado

Parámetros:
nameNombre del atributo a establecer
valueValor del atributo
elementElemento del que se quiere establecer el atributo
Devuelve:
true si la operación tiene éxito, false en caso contrario

Definición en la línea 198 del archivo parser.h.

template<typename T >
bool Parser::set_content ( const T &  value,
ticpp::Element *  element 
) [inline]

Establece el contenido del elemento dado

Parámetros:
valueValor del contenido a establecer
elementElemento del que queremos establecer su valor
Devuelve:
true si la operación tiene éxito, false en caso contrario

Definición en la línea 218 del archivo parser.h.


La documentación para esta clase fue generada a partir de los siguientes ficheros:
 Todo Clases Archivos Funciones Variables