summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-12-15 01:28:56 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-12-15 01:28:56 +0100
commit254426af12a0994a91cc7e47e5995186926ab60d (patch)
treebb950e0877878224d2249203c977cf6a5fb692f1 /common
parent6a8f3b190bfdfa772461a4fc019c11d759916160 (diff)
downloadeurephia-254426af12a0994a91cc7e47e5995186926ab60d.tar.gz
eurephia-254426af12a0994a91cc7e47e5995186926ab60d.tar.xz
eurephia-254426af12a0994a91cc7e47e5995186926ab60d.zip
Added simple functions for extracting char * from XML nodes
Diffstat (limited to 'common')
-rw-r--r--common/eurephia_xml.c49
-rw-r--r--common/eurephia_xml.h37
2 files changed, 86 insertions, 0 deletions
diff --git a/common/eurephia_xml.c b/common/eurephia_xml.c
new file mode 100644
index 0000000..c3389ae
--- /dev/null
+++ b/common/eurephia_xml.c
@@ -0,0 +1,49 @@
+/* eurephia_xml.c -- Generic helper functions for XML parsing
+ *
+ * GPLv2 - Copyright (C) 2008 David Sommerseth <dazo@users.sourceforge.net>
+ *
+ * This program 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; version 2
+ * of the License.
+ *
+ * This program 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_LIBXML2
+#include <libxml/tree.h>
+
+char *xmlGetAttrValue(xmlAttr *attr, const char *key) {
+ xmlAttr *aptr;
+
+ for( aptr = attr; aptr != NULL; aptr = aptr->next ) {
+ if( xmlStrcmp(aptr->name, (xmlChar *)key) == 0 ) {
+ return (char *)(aptr->children != NULL ? aptr->children->content : NULL);
+ }
+ }
+ return NULL;
+}
+
+xmlNode *xmlFindNode(xmlNode *node, const char *key) {
+ xmlNode *nptr = NULL;
+
+ if( node->children == NULL ) {
+ return NULL;
+ }
+ for( nptr = node->children; nptr != NULL; nptr = nptr->next ) {
+ if( xmlStrcmp(nptr->name, (xmlChar *)key) == 0 ) {
+ return nptr;
+ }
+ }
+ return NULL;
+}
+
+#endif
diff --git a/common/eurephia_xml.h b/common/eurephia_xml.h
new file mode 100644
index 0000000..c955653
--- /dev/null
+++ b/common/eurephia_xml.h
@@ -0,0 +1,37 @@
+/* eurephia_xml.h -- Generic helper functions for XML parsing
+ *
+ * GPLv2 - Copyright (C) 2008 David Sommerseth <dazo@users.sourceforge.net>
+ *
+ * This program 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; version 2
+ * of the License.
+ *
+ * This program 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef EUREPHIA_XML_H_
+# define EUREPHIA_XML_H_
+
+#ifdef HAVE_LIBXML2
+#include <libxml/tree.h>
+
+char *xmlGetAttrValue(xmlAttr *properties, const char *key);
+xmlNode *xmlFindNode(xmlNode *node, const char *key);
+
+#define xmlExtractContent(n) (char*) (((n != NULL) && (n->children != NULL)) ? n->children->content : NULL)
+inline char *xmlGetNodeContent(xmlNode *node, const char *key) {
+ return xmlExtractContent(xmlFindNode(node, key));
+}
+
+#endif /* HAVE_LIBXML2 */
+
+#endif /* !EUREPHIA_XML_H_ */