Darwin  1.10(beta)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
drwnXMLParser.h
Go to the documentation of this file.
1 /*****************************************************************************
2 ** DARWIN: A FRAMEWORK FOR MACHINE LEARNING RESEARCH AND DEVELOPMENT
3 ** Distributed under the terms of the BSD license (see the LICENSE file)
4 ** Copyright (c) 2007-2015, Stephen Gould
5 ** All rights reserved.
6 **
7 ******************************************************************************
8 ** FILENAME: drwnXMLParser.h
9 ** AUTHOR(S): Stephen Gould <stephen.gould@anu.edu.au>
10 **
11 *****************************************************************************/
12 
30 #pragma once
31 
32 #define RAPIDXML_NO_EXCEPTIONS
33 #include "../../../external/rapidxml/rapidxml.hpp"
34 #include "../../../external/rapidxml/rapidxml_utils.hpp"
35 #include "../../../external/rapidxml/rapidxml_print.hpp"
36 
37 #define drwnXMLDoc rapidxml::xml_document<char>
38 #define drwnXMLNode rapidxml::xml_node<char>
39 #define drwnXMLAttr rapidxml::xml_attribute<char>
40 
41 // essential utilities
42 
45 drwnXMLNode *drwnParseXMLFile(drwnXMLDoc& xml, const char* filename, const char *tag = NULL);
47 bool drwnIsXMLEmpty(drwnXMLNode& xml);
49 int drwnCountXMLChildren(drwnXMLNode& xml, const char *name = NULL);
53 drwnXMLAttr *drwnAddXMLAttribute(drwnXMLNode& xml, const char *name, const char *value,
54  bool bCopyName = true);
56 drwnXMLNode *drwnAddXMLText(drwnXMLNode& xml, const char *value);
59 drwnXMLNode *drwnAddXMLChildNode(drwnXMLNode& parent, const char *name,
60  const char *value = NULL, bool bCopyName = true);
63 drwnXMLNode *drwnAddXMLRootNode(drwnXMLDoc& xml, const char *name, bool bCopyName = false);
65 inline const char *drwnGetXMLAttribute(const drwnXMLNode& node, const char *name)
66 {
67  drwnXMLAttr *a = node.first_attribute(name);
68  return (a == NULL) ? NULL : a->value();
69 }
71 inline const char *drwnGetXMLText(const drwnXMLNode &node)
72 {
73  if ((node.value() != NULL) && (node.value()[0] != '\0'))
74  return node.value();
75 
76  const drwnXMLNode *child = node.first_node();
77  while (child != NULL) {
78  if (child->type() == rapidxml::node_data) {
79  return child->value();
80  }
81  child = child->next_sibling();
82  }
83 
84  return node.value();
85 }
drwnXMLNode * drwnAddXMLChildNode(drwnXMLNode &parent, const char *name, const char *value=NULL, bool bCopyName=true)
adds a child node for a given parent (set bCopyName to false if it's a static string) and returns a r...
Definition: drwnXMLParser.cpp:102
bool drwnIsXMLEmpty(drwnXMLNode &xml)
checks whether an xml document is empty
Definition: drwnXMLParser.cpp:55
drwnXMLNode * drwnParseXMLFile(drwnXMLDoc &xml, const char *filename, const char *tag=NULL)
parse an xml file into xml (loads all data into memory) and return a pointer to the first node (with ...
Definition: drwnXMLParser.cpp:22
int drwnCountXMLChildren(drwnXMLNode &xml, const char *name=NULL)
counts the number of children with name name
Definition: drwnXMLParser.cpp:60
const char * drwnGetXMLAttribute(const drwnXMLNode &node, const char *name)
returns an attribute string (or NULL if the string does not exist)
Definition: drwnXMLParser.h:65
drwnXMLNode * drwnAddXMLRootNode(drwnXMLDoc &xml, const char *name, bool bCopyName=false)
adds a root node to an xml document (set bCopyName to false if it's a static string) and returns a re...
Definition: drwnXMLParser.cpp:120
const char * drwnGetXMLText(const drwnXMLNode &node)
returns node text (or NULL if the node has no text)
Definition: drwnXMLParser.h:71
drwnXMLAttr * drwnAddXMLAttribute(drwnXMLNode &xml, const char *name, const char *value, bool bCopyName=true)
Adds/changes an attribute for a given node (set bCopyName to false if it's a static string) and retur...
Definition: drwnXMLParser.cpp:69
drwnXMLNode * drwnAddXMLText(drwnXMLNode &xml, const char *value)
adds/changes an text for a given node
Definition: drwnXMLParser.cpp:87