gwenhywfar  5.3.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 
29 #include <gwenhywfar/stringlist.h>
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
38 extern "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 
110 #define GWEN_XML_FLAGS_DEFAULT \
111  (\
112  GWEN_XML_FLAGS_INDENT | \
113  GWEN_XML_FLAGS_HANDLE_COMMENTS | \
114  GWEN_XML_FLAGS_HANDLE_HEADERS\
115  )
116 
125 
126 #define GWEN_XML_PATH_FLAGS_OVERWRITE_VALUES 0x00010000
127 
135 typedef enum {
143 }
145 
149 typedef struct GWEN__XMLNODE GWEN_XMLNODE;
151 
154 
156 
157 #ifdef __cplusplus
158 }
159 #endif
160 
161 
162 #include <gwenhywfar/xmlctx.h>
163 #include <gwenhywfar/fastbuffer.h>
164 
165 
166 #ifdef __cplusplus
167 extern "C" {
168 #endif
169 
170 
171 
177 GWEN_XMLNODE *GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data);
178 
184 
192 
198 
222 
229 
235 
242 
249 
274 const char *GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n,
275  const char *name,
276  const char *defaultValue);
277 
287  const char *name,
288  const char *value);
289 
295 int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name,
296  int defaultValue);
297 
303  const char *name, int value);
304 
316  const GWEN_XMLNODE *sn,
317  int overwrite);
326 GWEN_XMLNODE_TYPE GWEN_XMLNode_GetType(const GWEN_XMLNODE *n);
327 
330 const char *GWEN_XMLNode_GetData(const GWEN_XMLNODE *n);
331 
335 void GWEN_XMLNode_SetData(GWEN_XMLNODE *n, const char *data);
336 
338 const char *GWEN_XMLNode_GetNamespace(const GWEN_XMLNODE *n);
339 
341 void GWEN_XMLNode_SetNamespace(GWEN_XMLNODE *n, const char *s);
342 
362 
365 
367 uint32_t GWEN_XMLNode_GetUsage(const GWEN_XMLNODE *n);
386 
396 
401 
412 
426 
436 
450 
478  const char *tname,
479  const char *pname,
480  const char *pvalue);
481 
489  const char *tname,
490  const char *pname,
491  const char *pvalue);
492 
498 int GWEN_XMLNode_IsChildOf(const GWEN_XMLNODE *parent,
499  const GWEN_XMLNODE *child);
500 
502 int GWEN_XMLNode_GetXPath(const GWEN_XMLNODE *n1,
503  const GWEN_XMLNODE *n2,
504  GWEN_BUFFER *nbuf);
505 
520  const char *path,
521  uint32_t flags);
522 
523 
531 
542 
552 
558 
571  int copythem);
572 
580  GWEN_XMLNODE_TYPE t,
581  const char *data);
589 
596 
597 
598 
601 
602 
605 
606 
610  uint32_t *pLastId);
611 
612 
615 
621 
623 int GWEN_XMLContext_ReadFromFile(GWEN_XML_CONTEXT *ctx, const char *fname);
624 
626 int GWEN_XMLContext_ReadFromString(GWEN_XML_CONTEXT *ctx, const char *text);
627 
628 
634 int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath, uint32_t flags);
635 
638  int len,
639  uint32_t flags);
640 
646  GWEN_XML_CONTEXT *ctx,
647  GWEN_SYNCIO *sio);
648 
654  const char *fname,
655  uint32_t flags);
656 
658 int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags);
659 
660 
661 
662 
665 
668  const char *s);
669 
672  const char *s);
673 
676 
677 
678 
706 
717 const char *GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n,
718  const char *name,
719  const char *defValue);
720 
723  const char *name,
724  const char *value);
725 
740  const char *name,
741  const char *defValue);
742 
752  const char *name,
753  int defValue);
754 
757  const char *name,
758  int value);
759 
787 
796  const char *path,
797  const char *defValue);
798 
800 int GWEN_XMLNode_SetCharValueByPath(GWEN_XMLNODE *n, uint32_t flags,
801  const char *name,
802  const char *value);
803 
812  const char *name,
813  int defValue);
814 
816 int GWEN_XMLNode_SetIntValueByPath(GWEN_XMLNODE *n, uint32_t flags,
817  const char *name,
818  int value);
819 
828 
833 void GWEN_XMLNode_Dump(const GWEN_XMLNODE *n, int ind);
836  /* defgroup */
837 
838 
846 
848 
849 
856 
862  GWEN_XMLNODE *n);
863 
870 
875 void GWEN_XMLNode_Path_Dump(GWEN_XMLNODE_PATH *np); /* defgroup */ /* defgroup (all)*/
878 
879 
880 
883  const char *url);
884 
887 
890 
893 
896 
897 
898 #ifdef __cplusplus
899 }
900 #endif
901 
902 
903 
904 #endif
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetHeader(const GWEN_XMLNODE *n)
GWENHYWFAR_API uint32_t GWEN_XMLNode_GetUsage(const GWEN_XMLNODE *n)
struct GWEN_XMLNODE_NAMESPACE GWEN_XMLNODE_NAMESPACE
Definition: xml.h:150
GWENHYWFAR_API void GWEN_XMLNode_AddHeader(GWEN_XMLNODE *root, GWEN_XMLNODE *nh)
GWENHYWFAR_API int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE_LIST * GWEN_XMLNode_GetNameSpaces(const GWEN_XMLNODE *n)
GWENHYWFAR_API const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetNextData(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_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetFirstData(const GWEN_XMLNODE *n)
GWENHYWFAR_API const char * GWEN_XMLNode_NameSpace_GetName(const GWEN_XMLNODE_NAMESPACE *ns)
GWENHYWFAR_API void GWEN_XMLNode_SetProperty(GWEN_XMLNODE *n, const char *name, const char *value)
GWENHYWFAR_API int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath, uint32_t flags)
GWENHYWFAR_API void GWEN_XMLNode_Path_Dump(GWEN_XMLNODE_PATH *np)
GWENHYWFAR_API void GWEN_XMLNode_Dump(const GWEN_XMLNODE *n, int ind)
GWENHYWFAR_API int GWEN_XMLNode_IsChildOf(const GWEN_XMLNODE *parent, const GWEN_XMLNODE *child)
GWENHYWFAR_API void GWEN_XMLNode_RemoveChildren(GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
GWENHYWFAR_API int GWEN_XMLNode_WriteToStream(const GWEN_XMLNODE *n, GWEN_XML_CONTEXT *ctx, GWEN_SYNCIO *sio)
struct GWEN_XMLNODE_PATH GWEN_XMLNODE_PATH
Definition: xml.h:847
GWENHYWFAR_API void GWEN_XMLNode_AddNameSpace(GWEN_XMLNODE *n, const GWEN_XMLNODE_NAMESPACE *ns)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
GWENHYWFAR_API void GWEN_XMLNode_CopyProperties(GWEN_XMLNODE *tn, const GWEN_XMLNODE *sn, int overwrite)
GWENHYWFAR_API void GWEN_XMLNode_SetData(GWEN_XMLNODE *n, const char *data)
GWENHYWFAR_API int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetChild(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE * GWEN_XMLNode_FindNameSpaceByUrl(const GWEN_XMLNODE *n, const char *s)
GWENHYWFAR_API void GWEN_XMLNode_DelHeader(GWEN_XMLNODE *root, GWEN_XMLNODE *nh)
struct GWEN_SYNCIO GWEN_SYNCIO
Definition: syncio.h:40
GWENHYWFAR_API int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name, int defaultValue)
GWENHYWFAR_API GWEN_XMLNODE_TYPE GWEN_XMLNode_GetType(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE_PATH * GWEN_XMLNode_Path_new(void)
GWENHYWFAR_API const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
GWENHYWFAR_API int GWEN_XMLNode_SetIntValueByPath(GWEN_XMLNODE *n, uint32_t flags, const char *name, int value)
#define GWEN_LIST2_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list2.h:56
GWENHYWFAR_API int GWEN_XML_ReadFromFastBuffer(GWEN_XML_CONTEXT *ctx, GWEN_FAST_BUFFER *fb)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE * GWEN_XMLNode_NameSpace_dup(const GWEN_XMLNODE_NAMESPACE *ns)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetNextTag(const GWEN_XMLNODE *n)
GWENHYWFAR_API const char * GWEN_XMLNode_GetNamespace(const GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLContext_ReadFromFile(GWEN_XML_CONTEXT *ctx, const char *fname)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_Path_Surface(GWEN_XMLNODE_PATH *np)
GWENHYWFAR_API GWEN_XMLNODE_NAMESPACE * GWEN_XMLNode_NameSpace_new(const char *name, const char *url)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetNodeByXPath(GWEN_XMLNODE *n, const char *path, uint32_t flags)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_Next(const GWEN_XMLNODE *n)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_FindNode(const GWEN_XMLNODE *n, GWEN_XMLNODE_TYPE t, const char *data)
GWENHYWFAR_API void GWEN_XMLNode_SetNamespace(GWEN_XMLNODE *n, const char *s)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_fromString(const char *s, int len, uint32_t flags)
GWENHYWFAR_API int GWEN_XMLNode_WriteFile(const GWEN_XMLNODE *n, const char *fname, uint32_t flags)
GWENHYWFAR_API void GWEN_XMLNode_free(GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_UnlinkChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetParent(const GWEN_XMLNODE *n)
#define GWENHYWFAR_API
Definition: gwenhywfarapi.h:67
GWENHYWFAR_API void GWEN_XMLNode_DecUsage(GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLNode_GetXPath(const GWEN_XMLNODE *n1, const GWEN_XMLNODE *n2, GWEN_BUFFER *nbuf)
GWENHYWFAR_API void GWEN_XMLNode_SetIntProperty(GWEN_XMLNODE *n, const char *name, int value)
#define GWEN_LIST_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list1.h:348
GWEN_XMLNODE_TYPE
Definition: xml.h:135
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_GetFirstTag(const GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLNode_SetCharValueByPath(GWEN_XMLNODE *n, uint32_t flags, const char *name, const char *value)
GWENHYWFAR_API const char * GWEN_XMLNode_GetData(const GWEN_XMLNODE *n)
GWENHYWFAR_API const char * GWEN_XMLNode_GetLocalizedCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
GWENHYWFAR_API int GWEN_XMLContext_ReadFromString(GWEN_XML_CONTEXT *ctx, const char *text)
GWENHYWFAR_API int GWEN_XMLContext_ReadFromIo(GWEN_XML_CONTEXT *ctx, GWEN_SYNCIO *io)
This file contains some macros concerning lists.
GWENHYWFAR_API const char * GWEN_XMLNode_NameSpace_GetUrl(const GWEN_XMLNODE_NAMESPACE *ns)
GWENHYWFAR_API GWEN_XMLNODE_PATH * GWEN_XMLNode_Path_dup(const GWEN_XMLNODE_PATH *np)
GWENHYWFAR_API GWEN_XMLNODE * GWEN_XMLNode_dup(const GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLNode_Path_Dive(GWEN_XMLNODE_PATH *np, GWEN_XMLNODE *n)
GWENHYWFAR_API int GWEN_XMLNode_GetIntValueByPath(GWEN_XMLNODE *n, const char *name, int defValue)
GWENHYWFAR_API int GWEN_XMLNode_NormalizeNameSpaces(GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_ClearHeaders(GWEN_XMLNODE *root)
GWENHYWFAR_API const char * GWEN_XMLNode_GetCharValueByPath(GWEN_XMLNODE *n, const char *path, const char *defValue)
GWENHYWFAR_API void GWEN_XMLNode_AddChildrenOnly(GWEN_XMLNODE *n, GWEN_XMLNODE *nn, int copythem)
GWENHYWFAR_API void GWEN_XMLNode_Path_free(GWEN_XMLNODE_PATH *np)
GWENHYWFAR_API int GWEN_XMLNode_Globalize(GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_IncUsage(GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_NameSpace_free(GWEN_XMLNODE_NAMESPACE *ns)
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:149
struct GWEN_XML_CONTEXT GWEN_XML_CONTEXT
Definition: xmlctx.h:39
GWENHYWFAR_API int GWEN_XMLNode_GlobalizeWithList(GWEN_XMLNODE *n, GWEN_XMLNODE_NAMESPACE_LIST *l, uint32_t *pLastId)
GWENHYWFAR_API int GWEN_XMLNode_StripNamespaces(GWEN_XMLNODE *n)
GWENHYWFAR_API void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
GWENHYWFAR_API void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)
GWENHYWFAR_API void GWEN_XMLNode_freeAll(GWEN_XMLNODE *n)