diff options
Diffstat (limited to 'src/xml.h')
-rw-r--r-- | src/xml.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/xml.h b/src/xml.h new file mode 100644 index 0000000..2d35cc6 --- /dev/null +++ b/src/xml.h @@ -0,0 +1,96 @@ + +/* Firebox Tools - Outils de configurations pour le WM Firebox + * xml.h - prototypes pour la lecture ou l'écriture de documents XML + * + * Copyright (C) 2006-2007 Cyrille Bagard + * + * This file is part of Firebox Tools. + * + * Firebox Tools is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Firebox Tools is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#ifndef _XML_H +#define _XML_H + + +#include <stdbool.h> +#include <glib/gtypes.h> +#include <libxml/tree.h> +#include <libxml/xmlwriter.h> +#include <libxml/xpath.h> + + + +/* --------------------- OPERATIONS DE LECTURE D'UN FICHIER XML --------------------- */ + + +#define XPATH_OBJ_NODES_COUNT(obj) (obj != NULL ? obj->nodesetval->nodeNr : 0) +#define NODE_FROM_PATH_OBJ(obj, i) obj->nodesetval->nodeTab[i] + + +/* Ouvre un fichier XML de façon encadrée. */ +gboolean open_xml_file(const char *filename, xmlDoc **, xmlNode **, xmlXPathContextPtr *); + +/* Obtient de façon encadrée l'accès à un noeud défini. */ +xmlXPathObjectPtr get_node_xpath_object(xmlXPathContextPtr, const char *); + +/* Obtient une valeur placée entre <...> et </...>. */ +char *qck_get_node_text_value(xmlNodePtr); + +/* Obtient une valeur placée entre <...> et </...>. */ +char *get_node_text_value(xmlXPathContextPtr, const char *); + +/* Obtient la valeur d'une propriété d'un élément. */ +char *qck_get_node_prop_value(xmlNodePtr, const char *); + +/* Obtient la valeur d'une propriété d'un élément. */ +char *get_node_prop_value(xmlXPathContextPtr, const char *, const char *); + +/* Construit un chemin d'accès complet selon le fichier XML. */ +char *qck_build_filename_with_doc_url(xmlNodePtr); + +/* Construit un chemin d'accès complet selon le fichier XML. */ +char *build_filename_with_doc_url(xmlXPathContextPtr xpathCtx, const char *path); + + + +/* --------------------- OPERATIONS D'ECRITURE D'UN FICHIER XML --------------------- */ + + +/* Amorce l'écriture d'un nouveau fichier XML. */ +xmlTextWriterPtr start_writing_xml_file(const char *); + +/* Met fin à l'écriture d'un nouveau fichier XML. */ +bool end_writing_xml_file(xmlTextWriterPtr); + +/* Ecrit une balise et ne la referme pas. */ +bool open_xml_element(xmlTextWriterPtr, const char *); + +/* Ferme la dernière balise laissée ouverte. */ +bool close_xml_element(xmlTextWriterPtr); + +/* Ecrit une balise avec un contenu textuel. */ +bool write_xml_element_with_content(xmlTextWriterPtr, const char *, const char *, ...); + +/* Ecrit un attribut avec un contenu textuel. */ +bool write_xml_attribute(xmlTextWriterPtr, const char *, const char *, ...); + +/* Ecrit un contenu textuel. */ +bool write_xml_content(xmlTextWriterPtr, const char *, ...); + + + +#endif /* _XML_H */ |