gwenhywfar 5.12.0
xml.h
Go to the documentation of this file.
1/***************************************************************************
2 begin : Sat Jun 28 2003
3 copyright : (C) 2003-2010 by Martin Preuss
4 email : martin@libchipcard.de
5
6 ***************************************************************************
7 * *
8 * This library is free software; you can redistribute it and/or *
9 * modify it under the terms of the GNU Lesser General Public *
10 * License as published by the Free Software Foundation; either *
11 * version 2.1 of the License, or (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16 * Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public *
19 * License along with this library; if not, write to the Free Software *
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
21 * MA 02111-1307 USA *
22 * *
23 ***************************************************************************/
24
25#ifndef GWENHYWFAR_XML_H
26#define GWENHYWFAR_XML_H
27
30#include <gwenhywfar/types.h>
31#include <gwenhywfar/list2.h>
32#include <gwenhywfar/syncio.h>
33
34#include <stdio.h>
35
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
46
51
52
56
60#define GWEN_XML_FLAGS_HANDLE_COMMENTS 0x0001
61
66#define GWEN_XML_FLAGS_INDENT 0x0002
67
73#define GWEN_XML_FLAGS_HANDLE_OPEN_HTMLTAGS 0x0004
74
79#define GWEN_XML_FLAGS_NO_CONDENSE 0x0008
80
85#define GWEN_XML_FLAGS_KEEP_CNTRL 0x0010
86
87#define GWEN_XML_FLAGS_KEEP_BLANKS 0x0020
88
89#define GWEN_XML_FLAGS_SIMPLE 0x0040
90
94#define GWEN_XML_FLAGS_HANDLE_HEADERS 0x0080
95
103#define GWEN_XML_FLAGS_TOLERANT_ENDTAGS 0x0100
104
105#define GWEN_XML_FLAGS_HANDLE_NAMESPACES 0x0200
106
112#define GWEN_XML_FLAGS_SGML 0x0400
113
117#define GWEN_XML_FLAGS_DEFAULT \
118 (\
119 GWEN_XML_FLAGS_INDENT | \
120 GWEN_XML_FLAGS_HANDLE_COMMENTS | \
121 GWEN_XML_FLAGS_HANDLE_HEADERS\
122 )
123
132
133#define GWEN_XML_PATH_FLAGS_OVERWRITE_VALUES 0x00010000
134
142typedef enum {
152
156typedef struct GWEN__XMLNODE GWEN_XMLNODE;
158
161
163
164#ifdef __cplusplus
165}
166#endif
167
168
169#include <gwenhywfar/xmlctx.h>
171#include <gwenhywfar/db.h>
172
173
174#ifdef __cplusplus
175extern "C" {
176#endif
177
178
179
186
192
200
206
230
237
243
250
257
283 const char *name,
284 const char *defaultValue);
285
295 const char *name,
296 const char *value);
297
303int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name,
304 int defaultValue);
305
311 const char *name, int value);
312
324 const GWEN_XMLNODE *sn,
325 int overwrite);
326
336
346
349const char *GWEN_XMLNode_GetData(const GWEN_XMLNODE *n);
350
354void GWEN_XMLNode_SetData(GWEN_XMLNODE *n, const char *data);
355
358
361
381
384
405
415
420
431
445
455
469
497 const char *tname,
498 const char *pname,
499 const char *pvalue);
500
508 const char *tname,
509 const char *pname,
510 const char *pvalue);
511
518 const GWEN_XMLNODE *child);
519
522 const GWEN_XMLNODE *n2,
523 GWEN_BUFFER *nbuf);
524
539 const char *path,
540 uint32_t flags);
541
542
550
561
571
577
590 int copythem);
591
600 const char *data);
608
615
616
617
620
621
624
625
629 uint32_t *pLastId);
630
631
634
640
643
646
647
653int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath, uint32_t flags);
654
657 int len,
658 uint32_t flags);
659
665 GWEN_XML_CONTEXT *ctx,
666 GWEN_SYNCIO *sio);
667
673 const char *fname,
674 uint32_t flags);
675
677int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags);
678
679
680
681
684
687 const char *s);
688
691 const char *s);
692
695
696
697
725
737 const char *name,
738 const char *defValue);
739
742 const char *name,
743 const char *value);
744
759 const char *name,
760 const char *defValue);
761
771 const char *name,
772 int defValue);
773
776 const char *name,
777 int value);
778
806
815 const char *path,
816 const char *defValue);
817
820 const char *name,
821 const char *value);
822
831 const char *name,
832 int defValue);
833
836 const char *name,
837 int value);
838
847
852void GWEN_XMLNode_Dump(const GWEN_XMLNODE *n, int ind); /* defgroup */
856
857
865
867
868
875
881 GWEN_XMLNODE *n);
882
889
894void GWEN_XMLNode_Path_Dump(GWEN_XMLNODE_PATH *np); /* defgroup */ /* defgroup (all)*/
897
898
899
902 const char *url);
903
906
909
912
915
916
917#ifdef __cplusplus
918}
919#endif
920
921
922
923#endif
struct GWEN_DB_NODE GWEN_DB_NODE
Definition: db.h:228
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
#define GWENHYWFAR_API
Definition: gwenhywfarapi.h:67
#define GWEN_LIST_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list1.h:349
This file contains some macros concerning lists.
#define GWEN_LIST2_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list2.h:56
struct GWEN_SYNCIO GWEN_SYNCIO
Definition: syncio.h:40
GWENHYWFAR_API int GWEN_XMLNode_GetIntValueByPath(GWEN_XMLNODE *n, const char *name, int defValue)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetNextData(const GWEN_XMLNODE *n)
GWENHYWFAR_API const char * GWEN_XMLNode_NameSpace_GetName(const GWEN_XMLNODE_NAMESPACE *ns)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_dup(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
GWENHYWFAR_API int GWEN_XML_ReadFromFastBuffer(GWEN_XML_CONTEXT *ctx, GWEN_FAST_BUFFER *fb)
GWENHYWFAR_API GWEN_XMLNODE_PATH * GWEN_XMLNode_Path_dup(const GWEN_XMLNODE_PATH *np)
GWENHYWFAR_API void GWEN_XMLNode_RemoveChildren(GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE * GWEN_XMLNode_NameSpace_new(const char *name, const char *url)
GWENHYWFAR_API void GWEN_XMLNode_IncUsage(GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLContext_ReadFromFile(GWEN_XML_CONTEXT *ctx, const char *fname)
GWENHYWFAR_API void GWEN_XMLNode_SetProperty(GWEN_XMLNODE *n, const char *name, const char *value)
GWENHYWFAR_API int GWEN_XMLNode_ExpandProperties(const GWEN_XMLNODE *tn, GWEN_DB_NODE *dbVars)
GWENHYWFAR_API int GWEN_XMLNode_GlobalizeWithList(GWEN_XMLNODE *n, GWEN_XMLNODE_NAMESPACE_LIST *l, uint32_t *pLastId)
GWENHYWFAR_API const char * GWEN_XMLNode_GetData(const GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_DecUsage(GWEN_XMLNODE *n)
struct GWEN_XMLNODE_NAMESPACE GWEN_XMLNODE_NAMESPACE
Definition: xml.h:157
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetHeader(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE_TYPE GWEN_XMLNode_GetType(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE * GWEN_XMLNode_NameSpace_dup(const GWEN_XMLNODE_NAMESPACE *ns)
GWENHYWFAR_API void GWEN_XMLNode_free(GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags)
GWENHYWFAR_API int GWEN_XMLNode_SetIntValueByPath(GWEN_XMLNODE *n, uint32_t flags, const char *name, int value)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetFirstData(const GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_AddChildrenOnly(GWEN_XMLNODE *n, GWEN_XMLNODE *nn, int copythem)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE * GWEN_XMLNode_FindNameSpaceByUrl(const GWEN_XMLNODE *n, const char *s)
GWENHYWFAR_API int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name, int defaultValue)
GWENHYWFAR_API int GWEN_XMLContext_ReadFromString(GWEN_XML_CONTEXT *ctx, const char *text)
GWENHYWFAR_API const char * GWEN_XMLNode_GetLocalizedCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
GWENHYWFAR_API int GWEN_XMLNode_Globalize(GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLContext_ReadFromIo(GWEN_XML_CONTEXT *ctx, GWEN_SYNCIO *io)
GWENHYWFAR_API int GWEN_XMLNode_NormalizeNameSpaces(GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLNode_SetCharValueByPath(GWEN_XMLNODE *n, uint32_t flags, const char *name, const char *value)
GWENHYWFAR_API int GWEN_XMLNode_StripNamespaces(GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_fromString(const char *s, int len, uint32_t flags)
GWENHYWFAR_API void GWEN_XMLNode_Path_Dump(GWEN_XMLNODE_PATH *np)
GWENHYWFAR_API void GWEN_XMLNode_SetIntProperty(GWEN_XMLNODE *n, const char *name, int value)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_FindNode(const GWEN_XMLNODE *n, GWEN_XMLNODE_TYPE t, const char *data)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_Path_Surface(GWEN_XMLNODE_PATH *np)
GWENHYWFAR_API void GWEN_XMLNode_Dump(const GWEN_XMLNODE *n, int ind)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE_LIST * GWEN_XMLNode_GetNameSpaces(const GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
GWENHYWFAR_API void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)
GWENHYWFAR_API const char * GWEN_XMLNode_GetCharValueByPath(GWEN_XMLNODE *n, const char *path, const char *defValue)
GWENHYWFAR_API int GWEN_XMLNode_Path_Dive(GWEN_XMLNODE_PATH *np, GWEN_XMLNODE *n)
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:156
GWENHYWFAR_API void GWEN_XMLNode_NameSpace_free(GWEN_XMLNODE_NAMESPACE *ns)
GWENHYWFAR_API uint32_t GWEN_XMLNode_GetUsage(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetNextTag(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE * GWEN_XMLNode_FindNameSpaceByName(const GWEN_XMLNODE *n, const char *s)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_Next(const GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_CopyProperties(GWEN_XMLNODE *tn, const GWEN_XMLNODE *sn, int overwrite)
GWENHYWFAR_API void GWEN_XMLNode_freeAll(GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLNode_WriteFile(const GWEN_XMLNODE *n, const char *fname, uint32_t flags)
GWENHYWFAR_API const char * GWEN_XMLNode_GetNamespace(const GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_ClearHeaders(GWEN_XMLNODE *root)
GWENHYWFAR_API int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath, uint32_t flags)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetChild(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetFirstTag(const GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_AddNameSpace(GWEN_XMLNODE *n, const GWEN_XMLNODE_NAMESPACE *ns)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetNodeByXPath(GWEN_XMLNODE *n, const char *path, uint32_t flags)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetParent(const GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLNode_IsChildOf(const GWEN_XMLNODE *parent, const GWEN_XMLNODE *child)
GWENHYWFAR_API void GWEN_XMLNode_AddHeader(GWEN_XMLNODE *root, GWEN_XMLNODE *nh)
GWENHYWFAR_API int GWEN_XMLNode_WriteToStream(const GWEN_XMLNODE *n, GWEN_XML_CONTEXT *ctx, GWEN_SYNCIO *sio)
GWENHYWFAR_API int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
GWENHYWFAR_API void GWEN_XMLNode_Path_free(GWEN_XMLNODE_PATH *np)
GWENHYWFAR_API const char * GWEN_XMLNode_NameSpace_GetUrl(const GWEN_XMLNODE_NAMESPACE *ns)
GWEN_XMLNODE_TYPE
Definition: xml.h:142
@ GWEN_XMLNodeTypeData
Definition: xml.h:147
@ GWEN_XMLNodeTypeComment
Definition: xml.h:149
@ GWEN_XMLNodeTypeTag
Definition: xml.h:145
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
GWENHYWFAR_API const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
GWENHYWFAR_API int GWEN_XMLNode_GetXPath(const GWEN_XMLNODE *n1, const GWEN_XMLNODE *n2, GWEN_BUFFER *nbuf)
GWENHYWFAR_API void GWEN_XMLNode_SetNamespace(GWEN_XMLNODE *n, const char *s)
GWENHYWFAR_API void GWEN_XMLNode_UnlinkChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
GWENHYWFAR_API void GWEN_XMLNode_DelHeader(GWEN_XMLNODE *root, GWEN_XMLNODE *nh)
GWENHYWFAR_API const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
GWENHYWFAR_API void GWEN_XMLNode_SetData(GWEN_XMLNODE *n, const char *data)
GWENHYWFAR_API void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
GWENHYWFAR_API GWEN_XMLNODE_PATH * GWEN_XMLNode_Path_new(void)
struct GWEN_XMLNODE_PATH GWEN_XMLNODE_PATH
Definition: xml.h:866
struct GWEN_XML_CONTEXT GWEN_XML_CONTEXT
Definition: xmlctx.h:39