#ifndef __XML_TREE_H__
#define __XML_TREE_H__
#include <stdio.h>
#include <libxml/xmlversion.h>
#include <libxml/xmlstring.h>
#include <libxml/xmlmemory.h>
#ifdef __cplusplus
extern "C" {
#endif
struct _xmlParserInputBuffer;
typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
struct _xmlOutputBuffer;
typedef struct _xmlOutputBuffer xmlOutputBuffer;
typedef xmlOutputBuffer *xmlOutputBufferPtr;
typedef struct _xmlBuffer xmlBuffer;
typedef xmlBuffer *xmlBufferPtr;
typedef struct _xmlBuf xmlBuf;
typedef xmlBuf *xmlBufPtr;
typedef struct _xmlNode xmlNode;
typedef xmlNode *xmlNodePtr;
typedef struct _xmlDoc xmlDoc;
typedef xmlDoc *xmlDocPtr;
typedef struct _xmlNs xmlNs;
typedef xmlNs *xmlNsPtr;
typedef struct _xmlAttr xmlAttr;
typedef xmlAttr *xmlAttrPtr;
typedef struct _xmlDtd xmlDtd;
typedef xmlDtd *xmlDtdPtr;
typedef struct _xmlEntity xmlEntity;
typedef xmlEntity *xmlEntityPtr;
typedef struct _xmlNotation xmlNotation;
typedef xmlNotation *xmlNotationPtr;
typedef struct _xmlElementContent xmlElementContent;
typedef xmlElementContent *xmlElementContentPtr;
typedef struct _xmlAttribute xmlAttribute;
typedef xmlAttribute *xmlAttributePtr;
typedef struct _xmlEnumeration xmlEnumeration;
typedef xmlEnumeration *xmlEnumerationPtr;
typedef enum {
XML_ELEMENT_NODE = 1,
XML_ATTRIBUTE_NODE = 2,
XML_TEXT_NODE = 3,
XML_CDATA_SECTION_NODE = 4,
XML_ENTITY_REF_NODE = 5,
XML_ENTITY_NODE = 6,
XML_PI_NODE = 7,
XML_COMMENT_NODE = 8,
XML_DOCUMENT_NODE = 9,
XML_DOCUMENT_TYPE_NODE = 10,
XML_DOCUMENT_FRAG_NODE = 11,
XML_NOTATION_NODE = 12,
XML_HTML_DOCUMENT_NODE = 13,
XML_DTD_NODE = 14,
XML_ELEMENT_DECL = 15,
XML_ATTRIBUTE_DECL = 16,
XML_ENTITY_DECL = 17,
XML_NAMESPACE_DECL = 18,
XML_XINCLUDE_START = 19,
XML_XINCLUDE_END = 20
} xmlElementType;
typedef enum {
XML_ATTRIBUTE_CDATA = 1,
XML_ATTRIBUTE_ID = 2,
XML_ATTRIBUTE_IDREF = 3,
XML_ATTRIBUTE_IDREFS = 4,
XML_ATTRIBUTE_ENTITY = 5,
XML_ATTRIBUTE_ENTITIES = 6,
XML_ATTRIBUTE_NMTOKEN = 7,
XML_ATTRIBUTE_NMTOKENS = 8,
XML_ATTRIBUTE_ENUMERATION = 9,
XML_ATTRIBUTE_NOTATION = 10
} xmlAttributeType;
typedef enum {
XML_ATTRIBUTE_NONE = 1,
XML_ATTRIBUTE_REQUIRED = 2,
XML_ATTRIBUTE_IMPLIED = 3,
XML_ATTRIBUTE_FIXED = 4
} xmlAttributeDefault;
typedef enum {
XML_INTERNAL_GENERAL_ENTITY = 1,
XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
XML_INTERNAL_PARAMETER_ENTITY = 4,
XML_EXTERNAL_PARAMETER_ENTITY = 5,
XML_INTERNAL_PREDEFINED_ENTITY = 6
} xmlEntityType;
typedef enum {
XML_BUFFER_ALLOC_DOUBLEIT,
XML_BUFFER_ALLOC_EXACT,
XML_BUFFER_ALLOC_IMMUTABLE,
XML_BUFFER_ALLOC_IO,
XML_BUFFER_ALLOC_HYBRID,
XML_BUFFER_ALLOC_BOUNDED
} xmlBufferAllocationScheme;
#define XML_DOC_WELLFORMED 1
#define XML_DOC_NSVALID 2
#define XML_DOC_OLD10 4
#define XML_DOC_DTDVALID 8
#define XML_DOC_XINCLUDE 16
#define XML_DOC_USERBUILT 32
#define XML_DOC_INTERNAL 64
#define XML_DOC_HTML 128
#define XML_XML_NAMESPACE ((const xmlChar *) "http://www.w3.org/XML/1998/namespace")
#define XML_XMLNS_NAMESPACE ((const xmlChar *) "http://www.w3.org/2000/xmlns/")
#define XML_XMLNS_PREFIX ((const xmlChar *) "xmlns")
#define XML_MAX_TEXT_LENGTH 1000000000
#define XML_MAX_NAME_LENGTH 50000
#define XML_MAX_DICTIONARY_LIMIT 10000000
#define XML_MAX_LOOKUP_LIMIT 1000000
#define XML_MAX_HUGE_LENGTH 100000000
#define XML_MAX_NAMELEN 50000
#define XML_MAX_ATTRIBUTE_LENGTH 50000
struct _xmlBuffer {
xmlChar *content;
unsigned int use;
unsigned int size;
xmlBufferAllocationScheme alloc;
xmlChar *contentIO;
};
struct _xmlNode {
void *_private;
int type;
const xmlChar *name;
xmlNodePtr children;
xmlNodePtr last;
xmlNodePtr parent;
xmlNodePtr next;
xmlNodePtr prev;
xmlDocPtr doc;
xmlNsPtr ns;
xmlChar *content;
xmlAttrPtr properties;
xmlNsPtr nsDef;
void *psvi;
unsigned short line;
unsigned short extra;
};
struct _xmlAttr {
void *_private;
int type;
const xmlChar *name;
xmlNodePtr children;
xmlNodePtr last;
xmlNodePtr parent;
xmlAttrPtr next;
xmlAttrPtr prev;
xmlDocPtr doc;
xmlNsPtr ns;
int atype;
void *psvi;
int id;
};
struct _xmlNs {
xmlNsPtr next;
int type;
xmlChar *href;
xmlChar *prefix;
void *_private;
void *context;
};
struct _xmlDoc {
void *_private;
int type;
char *name;
xmlNodePtr children;
xmlNodePtr last;
xmlNodePtr parent;
xmlNodePtr next;
xmlNodePtr prev;
xmlDocPtr doc;
int compression;
int standalone;
xmlDtdPtr intSubset;
xmlDtdPtr extSubset;
xmlNsPtr oldNs;
const xmlChar *version;
const xmlChar *encoding;
void *ids;
void *refs;
const xmlChar *URL;
int charset;
void *dict;
void *psvi;
int parseFlags;
int properties;
};
struct _xmlDtd {
void *_private;
int type;
const xmlChar *name;
xmlNodePtr children;
xmlNodePtr last;
xmlNodePtr parent;
xmlNodePtr next;
xmlNodePtr prev;
xmlDocPtr doc;
void *notations;
void *elements;
void *attributes;
void *entities;
const xmlChar *ExternalID;
const xmlChar *SystemID;
void *pentities;
};
struct _xmlEntity {
void *_private;
int type;
const xmlChar *name;
xmlNodePtr children;
xmlNodePtr last;
xmlNodePtr parent;
xmlNodePtr next;
xmlNodePtr prev;
xmlDocPtr doc;
xmlChar *orig;
xmlChar *content;
int length;
int etype;
const xmlChar *ExternalID;
const xmlChar *SystemID;
xmlEntityPtr nexte;
const xmlChar *URI;
int owner;
int flags;
int expandedSize;
};
struct _xmlNotation {
const xmlChar *name;
const xmlChar *PublicID;
const xmlChar *SystemID;
};
struct _xmlElementContent {
int type;
int ocur;
const xmlChar *name;
xmlElementContentPtr c1;
xmlElementContentPtr c2;
xmlElementContentPtr parent;
const xmlChar *prefix;
};
struct _xmlEnumeration {
struct _xmlEnumeration *next;
const xmlChar *name;
};
struct _xmlAttribute {
void *_private;
int type;
const xmlChar *name;
xmlNodePtr children;
xmlNodePtr last;
xmlNodePtr parent;
xmlNodePtr next;
xmlNodePtr prev;
xmlDocPtr doc;
xmlAttributePtr nexth;
int atype;
int def;
const xmlChar *defaultValue;
xmlEnumerationPtr tree;
const xmlChar *prefix;
const xmlChar *elem;
};
typedef enum {
XML_ELEMENT_TYPE_UNDEFINED = 0,
XML_ELEMENT_TYPE_EMPTY = 1,
XML_ELEMENT_TYPE_ANY = 2,
XML_ELEMENT_TYPE_MIXED = 3,
XML_ELEMENT_TYPE_ELEMENT = 4
} xmlElementTypeVal;
#define XML_LOCAL_NAMESPACE 0
typedef int xmlNsType;
XMLPUBFUN xmlDocPtr xmlNewDoc(const xmlChar *version);
XMLPUBFUN void xmlFreeDoc(xmlDocPtr doc);
XMLPUBFUN xmlDocPtr xmlCopyDoc(const xmlDocPtr doc, int recursive);
XMLPUBFUN xmlNodePtr xmlNewNode(xmlNsPtr ns, const xmlChar *name);
XMLPUBFUN void xmlFreeNode(xmlNodePtr node);
XMLPUBFUN void xmlFreeNodeList(xmlNodePtr node);
XMLPUBFUN xmlNodePtr xmlCopyNode(const xmlNodePtr node, int extended);
XMLPUBFUN void xmlUnlinkNode(xmlNodePtr node);
XMLPUBFUN xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
XMLPUBFUN xmlNodePtr xmlAddSibling(xmlNodePtr cur, xmlNodePtr sibling);
XMLPUBFUN xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
const xmlChar *name, const xmlChar *content);
XMLPUBFUN xmlNodePtr xmlNewText(const xmlChar *content);
XMLPUBFUN xmlNodePtr xmlNewComment(const xmlChar *content);
XMLPUBFUN xmlNodePtr xmlNewPI(const xmlChar *name, const xmlChar *content);
XMLPUBFUN xmlNodePtr xmlNewCDataBlock(xmlDocPtr doc, const xmlChar *content, int len);
XMLPUBFUN xmlNodePtr xmlDocSetRootElement(xmlDocPtr doc, xmlNodePtr root);
XMLPUBFUN xmlNodePtr xmlDocGetRootElement(const xmlDoc *doc);
XMLPUBFUN long xmlGetLineNo(const xmlNode *node);
XMLPUBFUN xmlNsPtr xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix);
XMLPUBFUN void xmlSetNs(xmlNodePtr node, xmlNsPtr ns);
XMLPUBFUN xmlNsPtr *xmlGetNsList(xmlDocPtr doc, const xmlNode *node);
XMLPUBFUN xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace);
XMLPUBFUN xmlNsPtr xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const xmlChar *href);
XMLPUBFUN xmlAttrPtr xmlSetProp(xmlNodePtr node, const xmlChar *name, const xmlChar *value);
XMLPUBFUN xmlChar *xmlGetProp(const xmlNode *node, const xmlChar *name);
XMLPUBFUN xmlChar *xmlGetNsProp(const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace);
XMLPUBFUN xmlAttrPtr xmlSetNsProp(xmlNodePtr node, xmlNsPtr ns,
const xmlChar *name, const xmlChar *value);
XMLPUBFUN int xmlRemoveProp(xmlAttrPtr attr);
XMLPUBFUN xmlDtdPtr xmlGetIntSubset(const xmlDoc *doc);
XMLPUBFUN xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const xmlChar *name,
const xmlChar *ExternalID, const xmlChar *SystemID);
XMLPUBFUN xmlEntityPtr xmlNewEntity(xmlDocPtr doc, const xmlChar *name, int type,
const xmlChar *ExternalID, const xmlChar *SystemID,
const xmlChar *content);
XMLPUBFUN xmlEntityPtr xmlGetDocEntity(const xmlDoc *doc, const xmlChar *name);
XMLPUBFUN xmlEntityPtr xmlGetParameterEntity(const xmlDoc *doc, const xmlChar *name);
XMLPUBFUN xmlBufferPtr xmlBufferCreate(void);
XMLPUBFUN xmlBufferPtr xmlBufferCreateSize(size_t size);
XMLPUBFUN xmlBufferPtr xmlBufferCreateStatic(void *mem, size_t size);
XMLPUBFUN void xmlBufferFree(xmlBufferPtr buf);
XMLPUBFUN void xmlBufferEmpty(xmlBufferPtr buf);
XMLPUBFUN xmlChar *xmlBufferContent(const xmlBuffer *buf);
XMLPUBFUN int xmlBufferLength(const xmlBuffer *buf);
XMLPUBFUN int xmlBufferAdd(xmlBufferPtr buf, const xmlChar *str, int len);
XMLPUBFUN int xmlBufferAddHead(xmlBufferPtr buf, const xmlChar *str, int len);
XMLPUBFUN void xmlBufferSetAllocationScheme(xmlBufferPtr buf, int scheme);
XMLPUBFUN int xmlBufferShrink(xmlBufferPtr buf, int len);
XMLPUBFUN int xmlBufferGrow(xmlBufferPtr buf, int len);
XMLPUBFUN int xmlBufferReserve(xmlBufferPtr buf, int len);
XMLPUBFUN xmlChar *xmlBufferDetach(xmlBufferPtr buf);
#ifdef __cplusplus
}
#endif
#endif