summaryrefslogtreecommitdiffstats
path: root/branches/1.0/tinySAK/src/tsk_xml.c
diff options
context:
space:
mode:
Diffstat (limited to 'branches/1.0/tinySAK/src/tsk_xml.c')
-rw-r--r--branches/1.0/tinySAK/src/tsk_xml.c296
1 files changed, 0 insertions, 296 deletions
diff --git a/branches/1.0/tinySAK/src/tsk_xml.c b/branches/1.0/tinySAK/src/tsk_xml.c
deleted file mode 100644
index 0c1c56b..0000000
--- a/branches/1.0/tinySAK/src/tsk_xml.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
-* Copyright (C) 2009-2010 Mamadou Diop.
-*
-* Contact: Mamadou Diop <diopmamadou(at)doubango.org>
-*
-* This file is part of Open Source Doubango Framework.
-*
-* DOUBANGO 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 3 of the License, or
-* (at your option) any later version.
-*
-* DOUBANGO 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 DOUBANGO.
-*
-*/
-
-/**@file tsk_xml.c
- * @brief Useful functions to manipulate xml documents.
- *
- * @author Mamadou Diop <diopmamadou(at)doubango.org>
- *
- * @date Created: Sat Nov 8 16:54:58 2009 mdiop
- */
-#include "tsk_xml.h"
-
-#if HAVE_LIBXML2_H
-
-#include "tsk_string.h"
-#include "tsk_memory.h"
-#include "tsk_macros.h"
-
-#include <string.h>
-
-/**@defgroup tsk_xml_group XML
-*/
-
-/**@page tsk_xml_page XML Tutorial
-*/
-
-
-/**@ingroup tsk_xml_group
-* Initialize an XML namespace
-* @param namespace The XML namespace to initialize.
-*/
-/*void tsk_xml_namespace_init(tsk_xml_namespace_t* namespace)
-{
-}*/
-
-/**@ingroup tsk_xml_group
-* Free an XML namespace
-* @param namespace The namespace to free
-*/
-/*void tsk_xml_namespace_free(tsk_xml_namespace_t** namespace)
-{
- TSK_FREE((*namespace)->prefix);
- TSK_FREE((*namespace)->value);
- TSK_FREE(namespace);
-}*/
-
-/**@ingroup tsk_xml_group
-* Initialize an XML element
-* @param element The XML element to initialize
-*/
-/*void tsk_xml_element_init(tsk_xml_element_t* element)
-{
-}*/
-
-/**@ingroup tsk_xml_group
-* Initialize an XML element and set values
-* @param element The XML element to initialize
-* @param name The element name
-* @param value The element value
-* @param type The element type
-*/
-void tsk_xml_element_init_set(tsk_xml_element_t** element, const char* name, const char* value, tsk_xml_type_t type)
-{
- TSK_XML_ELEMENT_CREATE((*element));
- (*element)->elements = TSK_LIST_CREATE();
- (*element)->attributes = TSK_LIST_CREATE();
- (*element)->namespaces = TSK_LIST_CREATE();
- (*element)->name = tsk_strdup(name);
- (*element)->value = tsk_strdup(value);
- (*element)->type = type;
-}
-
-/**@ingroup tsk_xml_group
-* Free an XML element
-* @param _element The XML element to free
-*/
-/*void tsk_xml_element_free(void** _element)
-{
- tsk_xml_element_t** element = (tsk_xml_element_t**)_element;
-
- TSK_FREE((*element)->name);
- TSK_FREE((*element)->value);
- TSK_OBJECT_SAFE_FREE((*element)->elements);
- TSK_OBJECT_SAFE_FREE((*element)->attributes);
- TSK_OBJECT_SAFE_FREE((*element)->namespaces);
-
- TSK_FREE(element);
-}*/
-
-/**@ingroup tsk_xml_group
-* Initialize an XML attribute
-* @param attribute The XML attribute to initialize
-*/
-/*void tsk_xml_attribute_init(tsk_xml_attribute_t* attribute)
-{
-}*/
-
-/**@ingroup tsk_xml_group
-* Free an XML attribute
-* @param attribute The XML attribute to free
-*/
-/*void tsk_xml_attribute_free(tsk_xml_attribute_t** attribute)
-{
- TSK_FREE((*attribute)->name);
- TSK_FREE((*attribute)->value);
-
- TSK_FREE(attribute);
-}*/
-
-/**@ingroup tsk_xml_group
-* Get an XML namespace from an XML document
-* @param docPtr A pointer to the XML document
-* @param node The XML node from which to extract the namespace
-* @param href The namespace href
-* @retval The Namespace value matching our criteria (href)
-*/
-xmlNsPtr tsk_xml_get_namespace(xmlDocPtr docPtr, xmlNodePtr node, const char *href)
-{
- xmlNs *ns = *xmlGetNsList(docPtr, node);
- while (ns)
- {
- if (tsk_striequals(ns->href, href)) return ns;
- else ns = ns->next;
- }
-
- return 0;
-}
-
-/**@ingroup tsk_xml_group
-* Find an XML node by name
-* @param curr The XML node from which to start
-* @param name The name of the XML node to find
-* @param ftype The find type
-* @retval Returns the node which match our criteria. If none match, this method returns NULL.
-*/
-xmlNodePtr tsk_xml_find_node(const xmlNodePtr curr, const char* name, tsk_xml_node_find_type_t ftype)
-{
- xmlNodePtr node = curr;
-
- while(node)
- {
- switch(ftype)
- {
- case nft_none: return (tsk_striequals(node->name, name))? node : 0;
- case nft_children: node = node->children; break;
- case nft_parent: node = node->parent; break;
- case nft_next: node = node->next; break;
- case nft_prev: node = node->prev; break;
- default: return 0;
- } /* switch */
-
- /* check and return value if match */
- if( node && (!name || tsk_striequals(node->name, name)) )
- //if( node && (name == 0 || !tsk_stricmp((const char*)node->name, name)) )
- {
- return node;
- }
- }
-
- return 0;
-}
-
-/**@ingroup tsk_xml_group
-* Select an XML node
-* @retval Returns the pointer to the node which match our criteria. If none match, this method returns NULL.
-*/
-xmlNodePtr tsk_xml_select_node(const xmlNodePtr root, ...)
-{
- va_list list;
- int step;
- char* root_name = 0;
- xmlNodePtr node = root;
-
- if(!node || !(node->name)) return 0;
-
- /* initialize variable arguments */
- va_start(list, root);
-
- while( node && (step=va_arg(list, tsk_xml_node_select_type_t)) != nst_end)
- {
- switch(step)
- {
- case nst_by_name:
- { /* name */
- const char* qname = va_arg(list, const char*);
- if(tsk_striequals(root->name, qname)){
- node = tsk_xml_find_node(node, 0, nft_children);
- }
- else{
- if(!tsk_striequals(node->name, qname))
- { /* do not match */
- node = tsk_xml_find_node(node, qname, nft_next);
- }
- else
- { /* already match */
- node = node->children;
- }
- }
- break;
- }
-
- case nst_content:
- { /**/
- node = tsk_xml_find_node(node, 0, nft_children);
- break;
- }
-
- case nst_att_value:
- { /* qname, att_name */
- xmlAttrPtr attrPtr = 0;
- int found = 0;
- const char* qname = va_arg(list, const char*);
- const char* att_name = va_arg(list, const char*);
- node = tsk_xml_find_node(node, qname, nft_none);
- while( node && !found )
- {
- attrPtr = node->properties;
- while(attrPtr)
- {
- if(attrPtr->type == XML_ATTRIBUTE_NODE && attrPtr->children)
- {
- if( tsk_striequals(attrPtr->name, att_name) ){
- node = attrPtr->children;
- found = 1;
- }
- }
- attrPtr = attrPtr->next;
- }
- if(!found) node = tsk_xml_find_node(node, 0, nft_next);
- }
- break;
- }
-
- case nst_by_att:
- { /* qname att_name att_value */
- xmlAttrPtr attrPtr = 0;
- int found = 0;
- const char* qname = va_arg(list, const char*);
- const char* att_name = va_arg(list, const char*);
- const char* att_value = va_arg(list, const char*);
- node = tsk_xml_find_node(node, qname, nft_none);
- while( node && !found )
- {
- attrPtr = node->properties;
- while(attrPtr)
- {
- if(attrPtr->type == XML_ATTRIBUTE_NODE && attrPtr->children)
- {
- if( tsk_striequals(attrPtr->name, att_name)
- && ( (attrPtr->children->content && tsk_striequals(attrPtr->children->content, att_value)) || !att_value )
- ){
- found = 1;
- }
- }
- attrPtr = attrPtr->next;
- }
- if(!found) node = tsk_xml_find_node(node, 0, nft_next);
- }
-
- if(found && node) break;
- else return 0;
-
- break;
- }
- default: return 0;
- } /* switch */
-
- /* skip all comments */
- TSK_XML_NODE_SKIP_COMMENTS(node);
-
- } /* while*/
-
- return node;
-}
-
-#endif /* HAVE_LIBXML2_H */
-
OpenPOWER on IntegriCloud