00001
00002
00003
00004
00005
00006
00007
00008
00009
00018 #ifndef _LIBSGML_DOMNODE_H
00019 #define _LIBSGML_DOMNODE_H
00020
00021 #include <stdio.h>
00022
00023 #define DOM_NDOE_TYPE_INVALID 0x0000
00024 #define DOM_NODE_TYPE_DOCUMENT 0x0001
00025 #define DOM_NODE_TYPE_ELEMENT 0x0002
00026 #define DOM_NODE_TYPE_ATTRIBUTE 0x0003
00027 #define DOM_NODE_TYPE_TEXT 0x0004
00028 #define DOM_NODE_TYPE_COMMENT 0x0005
00029
00030 struct _dom_node_list;
00031
00035 typedef struct _dom_node {
00036
00053 unsigned long type;
00054
00058 char *name;
00062 char *value;
00063
00067 struct _dom_node *attributes;
00068
00072 struct _dom_node *parent;
00073
00077 struct _dom_node *firstChild;
00081 struct _dom_node *lastChild;
00082
00086 struct _dom_node *prevSibling;
00090 struct _dom_node *nextSibling;
00091
00095 unsigned char autoclose;
00099 unsigned char deferredClosure;
00103 unsigned char escapeTags;
00104
00105 } DOM_NODE;
00106
00130 DOM_NODE *domNodeNew(unsigned long type, const char *name, const char *value);
00136 void domNodeDestroySpecific(DOM_NODE *node);
00142 void domNodeDestroy(DOM_NODE *node);
00143
00150 void domNodeAppendChild(DOM_NODE *parent, DOM_NODE *child);
00157 void domNodeAppendSibling(DOM_NODE *node, DOM_NODE *sibling);
00164 void domNodeRemoveChild(DOM_NODE *parent, DOM_NODE *child);
00165
00172 DOM_NODE *domNodeGetFirstChild(DOM_NODE *node);
00179 DOM_NODE *domNodeGetPreviousSibling(DOM_NODE *node);
00186 DOM_NODE *domNodeGetNextSibling(DOM_NODE *node);
00187
00194 void domNodeSetName(DOM_NODE *node, const char *name);
00201 const char *domNodeGetName(DOM_NODE *node);
00202
00209 void domNodeSetValue(DOM_NODE *node, const char *value);
00216 const char *domNodeGetValue(DOM_NODE *node);
00217
00225 DOM_NODE *domNodeFindNodeByName(DOM_NODE *node, const char *name);
00233 struct _dom_node_list *domNodeFindNodesByName(DOM_NODE *node, const char *name);
00234 void domNodeFindNodesByName_r(struct _dom_node_list *nodeList, DOM_NODE *node, const char *name);
00235
00242 void domNodeSerializeToFile(DOM_NODE *node, const char *fileName);
00249 void domNodeSerializeToFd(DOM_NODE *node, FILE *fd);
00257 unsigned long domNodeSerializeToString(DOM_NODE *node, char **string);
00258
00259 void domNodeSerializeToString_r(DOM_NODE *node, char **string, unsigned long *stringLength);
00260
00265 #endif