OGR
cpl_minixml.h
Go to the documentation of this file.
1 /**********************************************************************
2  * $Id: cpl_minixml.h 35921 2016-10-25 02:28:29Z goatbar $
3  *
4  * Project: CPL - Common Portability Library
5  * Purpose: Declarations for MiniXML Handler.
6  * Author: Frank Warmerdam, warmerdam@pobox.com
7  *
8  **********************************************************************
9  * Copyright (c) 2001, Frank Warmerdam
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining a
12  * copy of this software and associated documentation files (the "Software"),
13  * to deal in the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15  * and/or sell copies of the Software, and to permit persons to whom the
16  * Software is furnished to do so, subject to the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be included
19  * in all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  ****************************************************************************/
29 
30 #ifndef CPL_MINIXML_H_INCLUDED
31 #define CPL_MINIXML_H_INCLUDED
32 
33 #include "cpl_port.h"
34 
42 
44 typedef enum
52 
66 typedef struct CPLXMLNode
67 {
75 
97  char *pszValue;
98 
107 
119 } CPLXMLNode;
120 
121 CPLXMLNode CPL_DLL *CPLParseXMLString( const char * );
122 void CPL_DLL CPLDestroyXMLNode( CPLXMLNode * );
123 CPLXMLNode CPL_DLL *CPLGetXMLNode( CPLXMLNode *poRoot,
124  const char *pszPath );
125 CPLXMLNode CPL_DLL *CPLSearchXMLNode( CPLXMLNode *poRoot,
126  const char *pszTarget );
127 const char CPL_DLL *CPLGetXMLValue( CPLXMLNode *poRoot,
128  const char *pszPath,
129  const char *pszDefault );
130 CPLXMLNode CPL_DLL *CPLCreateXMLNode( CPLXMLNode *poParent,
132  const char *pszText );
133 char CPL_DLL *CPLSerializeXMLTree( const CPLXMLNode *psNode );
134 void CPL_DLL CPLAddXMLChild( CPLXMLNode *psParent,
135  CPLXMLNode *psChild );
136 int CPL_DLL CPLRemoveXMLChild( CPLXMLNode *psParent,
137  CPLXMLNode *psChild );
138 void CPL_DLL CPLAddXMLSibling( CPLXMLNode *psOlderSibling,
139  CPLXMLNode *psNewSibling );
141  const char *pszName,
142  const char *pszValue );
143 void CPL_DLL CPLAddXMLAttributeAndValue( CPLXMLNode *psParent,
144  const char *pszName,
145  const char *pszValue );
146 CPLXMLNode CPL_DLL *CPLCloneXMLTree( CPLXMLNode *psTree );
147 int CPL_DLL CPLSetXMLValue( CPLXMLNode *psRoot, const char *pszPath,
148  const char *pszValue );
149 void CPL_DLL CPLStripXMLNamespace( CPLXMLNode *psRoot,
150  const char *pszNameSpace,
151  int bRecurse );
152 void CPL_DLL CPLCleanXMLElementName( char * );
153 
154 CPLXMLNode CPL_DLL *CPLParseXMLFile( const char *pszFilename );
155 int CPL_DLL CPLSerializeXMLTreeToFile( const CPLXMLNode *psTree,
156  const char *pszFilename );
157 
158 CPL_C_END
159 
160 #ifdef __cplusplus
161 
165  public:
167  explicit CPLXMLTreeCloser(CPLXMLNode* data) { the_data_ = data; }
168 
171  if (the_data_) CPLDestroyXMLNode(the_data_);
172  }
173 
177  CPLXMLNode* get() const { return the_data_; }
178 
182  CPLXMLNode* operator->() const { return get(); }
183 
184  private:
185  CPLXMLNode* the_data_;
186 };
187 #endif /* __cplusplus */
188 
189 #endif /* CPL_MINIXML_H_INCLUDED */
CPLGetXMLValue
const char * CPLGetXMLValue(CPLXMLNode *poRoot, const char *pszPath, const char *pszDefault)
Fetch element/attribute value.
Definition: cpl_minixml.cpp:1645
CXT_Element
@ CXT_Element
Definition: cpl_minixml.h:46
CPLGetLastErrorMsg
const char * CPLGetLastErrorMsg(void)
Definition: cpl_error.cpp:788
GByte
unsigned char GByte
Definition: cpl_port.h:207
CPLES_XML_BUT_QUOTES
#define CPLES_XML_BUT_QUOTES
Definition: cpl_string.h:208
cpl_error.h
CPLRemoveXMLChild
int CPLRemoveXMLChild(CPLXMLNode *psParent, CPLXMLNode *psChild)
Remove child node from parent.
Definition: cpl_minixml.cpp:1763
CPLEscapeString
char * CPLEscapeString(const char *pszString, int nLength, int nScheme)
Definition: cpl_string.cpp:2018
CPLParseXMLFile
CPLXMLNode * CPLParseXMLFile(const char *pszFilename)
Parse XML file into tree.
Definition: cpl_minixml.cpp:2131
CPLSetXMLValue
int CPLSetXMLValue(CPLXMLNode *psRoot, const char *pszPath, const char *pszValue)
Set element value by path.
Definition: cpl_minixml.cpp:1969
CPLCleanXMLElementName
void CPLCleanXMLElementName(char *)
Make string into safe XML token.
Definition: cpl_minixml.cpp:2240
CXT_Comment
@ CXT_Comment
Definition: cpl_minixml.h:49
CPLCalloc
void * CPLCalloc(size_t, size_t)
Definition: cpl_conv.cpp:128
VSIRealloc
void * VSIRealloc(void *, size_t)
Definition: cpl_vsisimple.cpp:671
cpl_minixml.h
cpl_vsi.h
CPLSearchXMLNode
CPLXMLNode * CPLSearchXMLNode(CPLXMLNode *poRoot, const char *pszTarget)
Search for a node in document.
Definition: cpl_minixml.cpp:1468
ParseContext
Definition: cpl_minixml.cpp:77
CPLString
Convenient string class based on std::string.
Definition: cpl_string.h:338
CPLParseXMLString
CPLXMLNode * CPLParseXMLString(const char *)
Parse an XML string into tree form.
Definition: cpl_minixml.cpp:614
VSIFWriteL
size_t VSIFWriteL(const void *, size_t, size_t, VSILFILE *) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Write bytes to file.
Definition: cpl_vsil.cpp:1036
CXT_Text
@ CXT_Text
Definition: cpl_minixml.h:47
CPLRealloc
void * CPLRealloc(void *, size_t)
Definition: cpl_conv.cpp:215
CPLXMLNode
Definition: cpl_minixml.h:66
EQUAL
#define EQUAL(a, b)
Definition: cpl_port.h:622
VSIFCloseL
int VSIFCloseL(VSILFILE *) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Close file.
Definition: cpl_vsil.cpp:712
CPLCloneXMLTree
CPLXMLNode * CPLCloneXMLTree(CPLXMLNode *psTree)
Copy tree.
Definition: cpl_minixml.cpp:1914
CPLXMLTreeCloser::CPLXMLTreeCloser
CPLXMLTreeCloser(CPLXMLNode *data)
Definition: cpl_minixml.h:167
CPLXMLNodeType
CPLXMLNodeType
Definition: cpl_minixml.h:44
CPLES_XML
#define CPLES_XML
Definition: cpl_string.h:200
CPLAssert
#define CPLAssert(expr)
Definition: cpl_error.h:182
CXT_Literal
@ CXT_Literal
Definition: cpl_minixml.h:50
CPL_C_START
#define CPL_C_START
Definition: cpl_port.h:352
CPLSerializeXMLTree
char * CPLSerializeXMLTree(const CPLXMLNode *psNode)
Convert tree into string document.
Definition: cpl_minixml.cpp:1252
CPLE_OutOfMemory
#define CPLE_OutOfMemory
Definition: cpl_error.h:102
CPLAddXMLAttributeAndValue
void CPLAddXMLAttributeAndValue(CPLXMLNode *psParent, const char *pszName, const char *pszValue)
Create an attribute and text value.
Definition: cpl_minixml.cpp:1890
CPLTestBool
bool CPLTestBool(const char *pszValue)
Definition: cpl_string.cpp:1522
CPLXMLTreeCloser
Definition: cpl_minixml.h:164
CPLGetXMLNode
CPLXMLNode * CPLGetXMLNode(CPLXMLNode *poRoot, const char *pszPath)
Find node by path.
Definition: cpl_minixml.cpp:1557
CPLXMLNode
struct CPLXMLNode CPLXMLNode
CPLSerializeXMLTreeToFile
int CPLSerializeXMLTreeToFile(const CPLXMLNode *psTree, const char *pszFilename)
Write document tree to a file.
Definition: cpl_minixml.cpp:2169
CPLGetLastErrorNo
CPLErrorNum CPLGetLastErrorNo(void)
Definition: cpl_error.cpp:740
CPLErrorNum
int CPLErrorNum
Definition: cpl_error.h:95
CPLE_OpenFailed
#define CPLE_OpenFailed
Definition: cpl_error.h:106
CPLXMLNode::eType
CPLXMLNodeType eType
Node type.
Definition: cpl_minixml.h:74
CPLDestroyXMLNode
void CPLDestroyXMLNode(CPLXMLNode *)
Destroy a tree.
Definition: cpl_minixml.cpp:1412
CPL_C_END
#define CPL_C_END
Definition: cpl_port.h:354
cpl_conv.h
cpl_string.h
CPLAddXMLChild
void CPLAddXMLChild(CPLXMLNode *psParent, CPLXMLNode *psChild)
Add child node to parent.
Definition: cpl_minixml.cpp:1707
CPLXMLTreeCloser::get
CPLXMLNode * get() const
Definition: cpl_minixml.h:177
CPLErrorReset
void CPLErrorReset(void)
Definition: cpl_error.cpp:653
CPLError
void CPLError(CPLErr eErrClass, CPLErrorNum err_no, const char *fmt,...)
Definition: cpl_error.cpp:215
CPLXMLTreeCloser::operator->
CPLXMLNode * operator->() const
Definition: cpl_minixml.h:182
vsi_l_offset
GUIntBig vsi_l_offset
Definition: cpl_vsi.h:138
VSIFree
void VSIFree(void *)
Definition: cpl_vsisimple.cpp:817
CSLTokenizeStringComplex
char ** CSLTokenizeStringComplex(const char *pszString, const char *pszDelimiter, int bHonourStrings, int bAllowEmptyTokens)
Definition: cpl_string.cpp:767
CPLE_NotSupported
#define CPLE_NotSupported
Definition: cpl_error.h:110
VSIStrdup
char * VSIStrdup(const char *)
Definition: cpl_vsisimple.cpp:985
CPLUnescapeString
char * CPLUnescapeString(const char *pszString, int *pnLength, int nScheme)
Definition: cpl_string.cpp:2227
VSICalloc
void * VSICalloc(size_t, size_t)
Definition: cpl_vsisimple.cpp:438
CXT_Attribute
@ CXT_Attribute
Definition: cpl_minixml.h:48
CPLCreateXMLNode
CPLXMLNode * CPLCreateXMLNode(CPLXMLNode *poParent, CPLXMLNodeType eType, const char *pszText)
Create an document tree item.
Definition: cpl_minixml.cpp:1297
CPLStripXMLNamespace
void CPLStripXMLNamespace(CPLXMLNode *psRoot, const char *pszNameSpace, int bRecurse)
Strip indicated namespaces.
Definition: cpl_minixml.cpp:2061
VSIMalloc
void * VSIMalloc(size_t)
Definition: cpl_vsisimple.cpp:548
CSLDestroy
void CSLDestroy(char **papszStrList)
Definition: cpl_string.cpp:200
CPLXMLTreeCloser::~CPLXMLTreeCloser
~CPLXMLTreeCloser()
Definition: cpl_minixml.h:170
CPLXMLNode::psNext
struct CPLXMLNode * psNext
Next sibling.
Definition: cpl_minixml.h:106
cpl_port.h
EQUALN
#define EQUALN(a, b, n)
Definition: cpl_port.h:620
VSIFOpenL
VSILFILE * VSIFOpenL(const char *, const char *)
Open file.
Definition: cpl_vsil.cpp:608
CPLErrorSetState
void CPLErrorSetState(CPLErr eErrClass, CPLErrorNum err_no, const char *pszMsg)
Definition: cpl_error.cpp:687
CPLErr
CPLErr
Definition: cpl_error.h:52
CPLCreateXMLElementAndValue
CPLXMLNode * CPLCreateXMLElementAndValue(CPLXMLNode *psParent, const char *pszName, const char *pszValue)
Create an element and text value.
Definition: cpl_minixml.cpp:1851
CPLStrdup
char * CPLStrdup(const char *)
Definition: cpl_conv.cpp:284
CPLGetLastErrorType
CPLErr CPLGetLastErrorType(void)
Definition: cpl_error.cpp:764
CPLXMLNode::pszValue
char * pszValue
Node value.
Definition: cpl_minixml.h:97
CPLXMLNode::psChild
struct CPLXMLNode * psChild
Child node.
Definition: cpl_minixml.h:118
CPLAddXMLSibling
void CPLAddXMLSibling(CPLXMLNode *psOlderSibling, CPLXMLNode *psNewSibling)
Add new sibling.
Definition: cpl_minixml.cpp:1808
VSIIngestFile
int VSIIngestFile(VSILFILE *fp, const char *pszFilename, GByte **ppabyRet, vsi_l_offset *pnSize, GIntBig nMaxSize)
Ingest a file into memory.
Definition: cpl_vsil.cpp:1278
StackContext
Definition: cpl_minixml.cpp:71
CPLE_FileIO
#define CPLE_FileIO
Definition: cpl_error.h:104
CPLFree
#define CPLFree
Definition: cpl_conv.h:81
CPLGetConfigOption
const char * CPLGetConfigOption(const char *, const char *)
Definition: cpl_conv.cpp:1625
VSILFILE
FILE VSILFILE
Definition: cpl_vsi.h:154
STARTS_WITH_CI
#define STARTS_WITH_CI(a, b)
Definition: cpl_port.h:633
CPLE_AppDefined
#define CPLE_AppDefined
Definition: cpl_error.h:100

Generated for GDAL by doxygen 1.8.17.