tree.h
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:18k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /*
  2.  * tree.h : describes the structures found in an tree resulting
  3.  *          from an XML parsing.
  4.  *
  5.  * See Copyright for the status of this software.
  6.  *
  7.  * Daniel.Veillard@w3.org
  8.  */
  9. #ifndef __XML_TREE_H__
  10. #define __XML_TREE_H__
  11. #include <stdio.h>
  12. #include <libxml/xmlversion.h>
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /*
  17.  * The different element types carried by an XML tree
  18.  *
  19.  * NOTE: This is synchronized with DOM Level1 values
  20.  *       See http://www.w3.org/TR/REC-DOM-Level-1/
  21.  */
  22. typedef enum {
  23.     XML_ELEMENT_NODE= 1,
  24.     XML_ATTRIBUTE_NODE= 2,
  25.     XML_TEXT_NODE= 3,
  26.     XML_CDATA_SECTION_NODE= 4,
  27.     XML_ENTITY_REF_NODE= 5,
  28.     XML_ENTITY_NODE= 6,
  29.     XML_PI_NODE= 7,
  30.     XML_COMMENT_NODE= 8,
  31.     XML_DOCUMENT_NODE= 9,
  32.     XML_DOCUMENT_TYPE_NODE= 10,
  33.     XML_DOCUMENT_FRAG_NODE= 11,
  34.     XML_NOTATION_NODE= 12,
  35.     XML_HTML_DOCUMENT_NODE= 13,
  36.     XML_DTD_NODE= 14,
  37.     XML_ELEMENT_DECL= 15,
  38.     XML_ATTRIBUTE_DECL= 16,
  39.     XML_ENTITY_DECL= 17
  40. } xmlElementType;
  41. /*
  42.  * Size of an internal character representation.
  43.  *
  44.  * We use 8bit chars internal representation for memory efficiency,
  45.  * Note that with 8 bits wide xmlChars one can still use UTF-8 to handle
  46.  * correctly non ISO-Latin input.
  47.  */
  48. typedef unsigned char xmlChar;
  49. #ifndef WIN32
  50. #ifndef CHAR
  51. #define CHAR xmlChar
  52. #endif
  53. #endif
  54. #define BAD_CAST (xmlChar *)
  55. /*
  56.  * a DTD Notation definition
  57.  */
  58. typedef struct _xmlNotation xmlNotation;
  59. typedef xmlNotation *xmlNotationPtr;
  60. struct _xmlNotation {
  61.     const xmlChar               *name; /* Notation name */
  62.     const xmlChar               *PublicID; /* Public identifier, if any */
  63.     const xmlChar               *SystemID; /* System identifier, if any */
  64. };
  65. /*
  66.  * a DTD Attribute definition
  67.  */
  68. typedef enum {
  69.     XML_ATTRIBUTE_CDATA = 1,
  70.     XML_ATTRIBUTE_ID,
  71.     XML_ATTRIBUTE_IDREF ,
  72.     XML_ATTRIBUTE_IDREFS,
  73.     XML_ATTRIBUTE_ENTITY,
  74.     XML_ATTRIBUTE_ENTITIES,
  75.     XML_ATTRIBUTE_NMTOKEN,
  76.     XML_ATTRIBUTE_NMTOKENS,
  77.     XML_ATTRIBUTE_ENUMERATION,
  78.     XML_ATTRIBUTE_NOTATION
  79. } xmlAttributeType;
  80. typedef enum {
  81.     XML_ATTRIBUTE_NONE = 1,
  82.     XML_ATTRIBUTE_REQUIRED,
  83.     XML_ATTRIBUTE_IMPLIED,
  84.     XML_ATTRIBUTE_FIXED
  85. } xmlAttributeDefault;
  86. typedef struct _xmlEnumeration xmlEnumeration;
  87. typedef xmlEnumeration *xmlEnumerationPtr;
  88. struct _xmlEnumeration {
  89.     struct _xmlEnumeration    *next; /* next one */
  90.     const xmlChar            *name; /* Enumeration name */
  91. };
  92. typedef struct _xmlAttribute xmlAttribute;
  93. typedef xmlAttribute *xmlAttributePtr;
  94. struct _xmlAttribute {
  95. #ifndef XML_WITHOUT_CORBA
  96.     void           *_private;         /* for Corba, must be first ! */
  97. #endif
  98.     xmlElementType          type;       /* XML_ATTRIBUTE_DECL, must be second ! */
  99.     const xmlChar          *name; /* Attribute name */
  100.     struct _xmlNode    *children; /* NULL */
  101.     struct _xmlNode        *last; /* NULL */
  102.     struct _xmlDtd       *parent; /* -> DTD */
  103.     struct _xmlNode        *next; /* next sibling link  */
  104.     struct _xmlNode        *prev; /* previous sibling link  */
  105.     struct _xmlDoc          *doc;       /* the containing document */
  106.     struct _xmlAttribute  *nexth; /* next in hash table */
  107.     xmlAttributeType       atype; /* The attribute type */
  108.     xmlAttributeDefault      def; /* the default */
  109.     const xmlChar  *defaultValue; /* or the default value */
  110.     xmlEnumerationPtr       tree;       /* or the enumeration tree if any */
  111.     const xmlChar        *prefix; /* the namespace prefix if any */
  112.     const xmlChar          *elem; /* Element holding the attribute */
  113. };
  114. /*
  115.  * a DTD Element definition.
  116.  */
  117. typedef enum {
  118.     XML_ELEMENT_CONTENT_PCDATA = 1,
  119.     XML_ELEMENT_CONTENT_ELEMENT,
  120.     XML_ELEMENT_CONTENT_SEQ,
  121.     XML_ELEMENT_CONTENT_OR
  122. } xmlElementContentType;
  123. typedef enum {
  124.     XML_ELEMENT_CONTENT_ONCE = 1,
  125.     XML_ELEMENT_CONTENT_OPT,
  126.     XML_ELEMENT_CONTENT_MULT,
  127.     XML_ELEMENT_CONTENT_PLUS
  128. } xmlElementContentOccur;
  129. typedef struct _xmlElementContent xmlElementContent;
  130. typedef xmlElementContent *xmlElementContentPtr;
  131. struct _xmlElementContent {
  132.     xmlElementContentType     type; /* PCDATA, ELEMENT, SEQ or OR */
  133.     xmlElementContentOccur    ocur; /* ONCE, OPT, MULT or PLUS */
  134.     const xmlChar            *name; /* Element name */
  135.     struct _xmlElementContent *c1; /* first child */
  136.     struct _xmlElementContent *c2; /* second child */
  137. };
  138. typedef enum {
  139.     XML_ELEMENT_TYPE_EMPTY = 1,
  140.     XML_ELEMENT_TYPE_ANY,
  141.     XML_ELEMENT_TYPE_MIXED,
  142.     XML_ELEMENT_TYPE_ELEMENT
  143. } xmlElementTypeVal;
  144. typedef struct _xmlElement xmlElement;
  145. typedef xmlElement *xmlElementPtr;
  146. struct _xmlElement {
  147. #ifndef XML_WITHOUT_CORBA
  148.     void           *_private;         /* for Corba, must be first ! */
  149. #endif
  150.     xmlElementType          type;       /* XML_ELEMENT_DECL, must be second ! */
  151.     const xmlChar          *name; /* Element name */
  152.     struct _xmlNode    *children; /* NULL */
  153.     struct _xmlNode        *last; /* NULL */
  154.     struct _xmlDtd       *parent; /* -> DTD */
  155.     struct _xmlNode        *next; /* next sibling link  */
  156.     struct _xmlNode        *prev; /* previous sibling link  */
  157.     struct _xmlDoc          *doc;       /* the containing document */
  158.     xmlElementTypeVal      etype; /* The type */
  159.     xmlElementContentPtr content; /* the allowed element content */
  160.     xmlAttributePtr   attributes; /* List of the declared attributes */
  161. };
  162. /*
  163.  * An XML namespace.
  164.  * Note that prefix == NULL is valid, it defines the default namespace
  165.  * within the subtree (until overriden).
  166.  */
  167. typedef enum {
  168.     XML_GLOBAL_NAMESPACE = 1, /* old style global namespace */
  169.     XML_LOCAL_NAMESPACE /* new style local scoping */
  170. } xmlNsType;
  171. typedef struct _xmlNs xmlNs;
  172. typedef xmlNs *xmlNsPtr;
  173. struct _xmlNs {
  174.     struct _xmlNs  *next; /* next Ns link for this node  */
  175.     xmlNsType      type; /* global or local */
  176.     const xmlChar *href; /* URL for the namespace */
  177.     const xmlChar *prefix; /* prefix for the namespace */
  178. };
  179. /*
  180.  * An XML DtD, as defined by <!DOCTYPE.
  181.  */
  182. typedef struct _xmlDtd xmlDtd;
  183. typedef xmlDtd *xmlDtdPtr;
  184. struct _xmlDtd {
  185. #ifndef XML_WITHOUT_CORBA
  186.     void           *_private; /* for Corba, must be first ! */
  187. #endif
  188.     xmlElementType  type;       /* XML_DTD_NODE, must be second ! */
  189.     const xmlChar *name; /* Name of the DTD */
  190.     struct _xmlNode *children; /* the value of the property link */
  191.     struct _xmlNode *last; /* last child link */
  192.     struct _xmlDoc  *parent; /* child->parent link */
  193.     struct _xmlNode *next; /* next sibling link  */
  194.     struct _xmlNode *prev; /* previous sibling link  */
  195.     struct _xmlDoc  *doc; /* the containing document */
  196.     /* End of common part */
  197.     void          *notations;   /* Hash table for notations if any */
  198.     void          *elements;    /* Hash table for elements if any */
  199.     void          *attributes;  /* Hash table for attributes if any */
  200.     void          *entities;    /* Hash table for entities if any */
  201.     const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */
  202.     const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
  203. };
  204. /*
  205.  * A attribute of an XML node.
  206.  */
  207. typedef struct _xmlAttr xmlAttr;
  208. typedef xmlAttr *xmlAttrPtr;
  209. struct _xmlAttr {
  210. #ifndef XML_WITHOUT_CORBA
  211.     void           *_private; /* for Corba, must be first ! */
  212. #endif
  213.     xmlElementType   type;      /* XML_ATTRIBUTE_NODE, must be second ! */
  214.     const xmlChar   *name;      /* the name of the property */
  215.     struct _xmlNode *children; /* the value of the property */
  216.     struct _xmlNode *last; /* NULL */
  217.     struct _xmlNode *parent; /* child->parent link */
  218.     struct _xmlAttr *next; /* next sibling link  */
  219.     struct _xmlAttr *prev; /* previous sibling link  */
  220.     struct _xmlDoc  *doc; /* the containing document */
  221.     xmlNs           *ns;        /* pointer to the associated namespace */
  222.     xmlAttributeType atype;     /* the attribute type if validating */
  223. };
  224. /*
  225.  * An XML ID instance.
  226.  */
  227. typedef struct _xmlID xmlID;
  228. typedef xmlID *xmlIDPtr;
  229. struct _xmlID {
  230.     struct _xmlID    *next; /* next ID */
  231.     const xmlChar    *value; /* The ID name */
  232.     xmlAttrPtr        attr; /* The attribut holding it */
  233. };
  234. /*
  235.  * An XML IDREF instance.
  236.  */
  237. typedef struct _xmlRef xmlRef;
  238. typedef xmlRef *xmlRefPtr;
  239. struct _xmlRef {
  240.     struct _xmlRef    *next; /* next Ref */
  241.     const xmlChar     *value; /* The Ref name */
  242.     xmlAttrPtr        attr; /* The attribut holding it */
  243. };
  244. /*
  245.  * A buffer structure
  246.  */
  247. typedef enum {
  248.     XML_BUFFER_ALLOC_DOUBLEIT,
  249.     XML_BUFFER_ALLOC_EXACT
  250. } xmlBufferAllocationScheme;
  251. typedef struct _xmlBuffer xmlBuffer;
  252. typedef xmlBuffer *xmlBufferPtr;
  253. struct _xmlBuffer {
  254.     xmlChar *content; /* The buffer content UTF8 */
  255.     unsigned int use; /* The buffer size used */
  256.     unsigned int size; /* The buffer size */
  257.     xmlBufferAllocationScheme alloc; /* The realloc method */
  258. };
  259. /*
  260.  * A node in an XML tree.
  261.  */
  262. typedef struct _xmlNode xmlNode;
  263. typedef xmlNode *xmlNodePtr;
  264. struct _xmlNode {
  265. #ifndef XML_WITHOUT_CORBA
  266.     void           *_private; /* for Corba, must be first ! */
  267. #endif
  268.     xmlElementType   type; /* type number, must be second ! */
  269.     const xmlChar   *name;      /* the name of the node, or the entity */
  270.     struct _xmlNode *children; /* parent->childs link */
  271.     struct _xmlNode *last; /* last child link */
  272.     struct _xmlNode *parent; /* child->parent link */
  273.     struct _xmlNode *next; /* next sibling link  */
  274.     struct _xmlNode *prev; /* previous sibling link  */
  275.     struct _xmlDoc  *doc; /* the containing document */
  276.     xmlNs           *ns;        /* pointer to the associated namespace */
  277. #ifndef XML_USE_BUFFER_CONTENT    
  278.     xmlChar         *content;   /* the content */
  279. #else
  280.     xmlBufferPtr     content;   /* the content in a buffer */
  281. #endif
  282.     /* End of common part */
  283.     struct _xmlAttr *properties;/* properties list */
  284.     xmlNs           *nsDef;     /* namespace definitions on this node */
  285. };
  286. /*
  287.  * An XML document.
  288.  */
  289. typedef struct _xmlDoc xmlDoc;
  290. typedef xmlDoc *xmlDocPtr;
  291. struct _xmlDoc {
  292. #ifndef XML_WITHOUT_CORBA
  293.     void           *_private; /* for Corba, must be first ! */
  294. #endif
  295.     xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
  296.     char           *name; /* name/filename/URI of the document */
  297.     struct _xmlNode *children; /* the document tree */
  298.     struct _xmlNode *last; /* last child link */
  299.     struct _xmlNode *parent; /* child->parent link */
  300.     struct _xmlNode *next; /* next sibling link  */
  301.     struct _xmlNode *prev; /* previous sibling link  */
  302.     struct _xmlDoc  *doc; /* autoreference to itself */
  303.     /* End of common part */
  304.     int             compression;/* level of zlib compression */
  305.     int             standalone; /* standalone document (no external refs) */
  306.     struct _xmlDtd  *intSubset; /* the document internal subset */
  307.     struct _xmlDtd  *extSubset; /* the document external subset */
  308.     struct _xmlNs   *oldNs; /* Global namespace, the old way */
  309.     const xmlChar  *version; /* the XML version string */
  310.     const xmlChar  *encoding;   /* encoding, if any */
  311.     void           *ids;        /* Hash table for ID attributes if any */
  312.     void           *refs;       /* Hash table for IDREFs attributes if any */
  313.     const xmlChar  *URL; /* The URI for that document */
  314. };
  315. /*
  316.  * Variables.
  317.  */
  318. extern xmlNsPtr baseDTD;
  319. extern int oldXMLWDcompatibility;/* maintain compatibility with old WD */
  320. extern int xmlIndentTreeOutput;  /* try to indent the tree dumps */
  321. extern xmlBufferAllocationScheme xmlBufferAllocScheme; /* alloc scheme to use */
  322. extern int xmlSaveNoEmptyTags;   /* save empty tags as <empty></empty> */
  323. /*
  324.  * Handling Buffers.
  325.  */
  326. xmlBufferPtr xmlBufferCreate (void);
  327. xmlBufferPtr xmlBufferCreateSize (size_t size);
  328. void xmlBufferFree (xmlBufferPtr buf);
  329. int xmlBufferDump (FILE *file,
  330.  xmlBufferPtr buf);
  331. void xmlBufferAdd (xmlBufferPtr buf,
  332.  const xmlChar *str,
  333.  int len);
  334. void xmlBufferCat (xmlBufferPtr buf,
  335.  const xmlChar *str);
  336. void xmlBufferCCat (xmlBufferPtr buf,
  337.  const char *str);
  338. int xmlBufferShrink (xmlBufferPtr buf,
  339.  int len);
  340. void xmlBufferEmpty (xmlBufferPtr buf);
  341. const xmlChar* xmlBufferContent (const xmlBufferPtr buf);
  342. int xmlBufferUse (const xmlBufferPtr buf);
  343. void xmlBufferSetAllocationScheme(xmlBufferPtr buf,
  344.  xmlBufferAllocationScheme scheme);
  345. int xmlBufferLength (const xmlBufferPtr buf);
  346. /*
  347.  * Creating/freeing new structures
  348.  */
  349. xmlDtdPtr xmlCreateIntSubset (xmlDocPtr doc,
  350.  const xmlChar *name,
  351.  const xmlChar *ExternalID,
  352.  const xmlChar *SystemID);
  353. xmlDtdPtr xmlNewDtd (xmlDocPtr doc,
  354.  const xmlChar *name,
  355.  const xmlChar *ExternalID,
  356.  const xmlChar *SystemID);
  357. void xmlFreeDtd (xmlDtdPtr cur);
  358. xmlNsPtr xmlNewGlobalNs (xmlDocPtr doc,
  359.  const xmlChar *href,
  360.  const xmlChar *prefix);
  361. xmlNsPtr xmlNewNs (xmlNodePtr node,
  362.  const xmlChar *href,
  363.  const xmlChar *prefix);
  364. void xmlFreeNs (xmlNsPtr cur);
  365. xmlDocPtr  xmlNewDoc (const xmlChar *version);
  366. void xmlFreeDoc (xmlDocPtr cur);
  367. xmlAttrPtr xmlNewDocProp (xmlDocPtr doc,
  368.  const xmlChar *name,
  369.  const xmlChar *value);
  370. xmlAttrPtr xmlNewProp (xmlNodePtr node,
  371.  const xmlChar *name,
  372.  const xmlChar *value);
  373. xmlAttrPtr xmlNewNsProp (xmlNodePtr node,
  374.  xmlNsPtr ns,
  375.  const xmlChar *name,
  376.  const xmlChar *value);
  377. void xmlFreePropList (xmlAttrPtr cur);
  378. void xmlFreeProp (xmlAttrPtr cur);
  379. xmlAttrPtr xmlCopyProp (xmlNodePtr target,
  380.  xmlAttrPtr cur);
  381. xmlAttrPtr xmlCopyPropList (xmlNodePtr target,
  382.  xmlAttrPtr cur);
  383. xmlDtdPtr xmlCopyDtd (xmlDtdPtr dtd);
  384. xmlDocPtr xmlCopyDoc (xmlDocPtr doc,
  385.  int recursive);
  386. /*
  387.  * Creating new nodes
  388.  */
  389. xmlNodePtr xmlNewDocNode (xmlDocPtr doc,
  390.  xmlNsPtr ns,
  391.  const xmlChar *name,
  392.  const xmlChar *content);
  393. xmlNodePtr xmlNewDocRawNode (xmlDocPtr doc,
  394.  xmlNsPtr ns,
  395.  const xmlChar *name,
  396.  const xmlChar *content);
  397. xmlNodePtr xmlNewNode (xmlNsPtr ns,
  398.  const xmlChar *name);
  399. xmlNodePtr xmlNewChild (xmlNodePtr parent,
  400.  xmlNsPtr ns,
  401.  const xmlChar *name,
  402.  const xmlChar *content);
  403. xmlNodePtr xmlNewTextChild (xmlNodePtr parent,
  404.  xmlNsPtr ns,
  405.  const xmlChar *name,
  406.  const xmlChar *content);
  407. xmlNodePtr xmlNewDocText (xmlDocPtr doc,
  408.  const xmlChar *content);
  409. xmlNodePtr xmlNewText (const xmlChar *content);
  410. xmlNodePtr xmlNewPI (const xmlChar *name,
  411.  const xmlChar *content);
  412. xmlNodePtr xmlNewDocTextLen (xmlDocPtr doc,
  413.  const xmlChar *content,
  414.  int len);
  415. xmlNodePtr xmlNewTextLen (const xmlChar *content,
  416.  int len);
  417. xmlNodePtr xmlNewDocComment (xmlDocPtr doc,
  418.  const xmlChar *content);
  419. xmlNodePtr xmlNewComment (const xmlChar *content);
  420. xmlNodePtr xmlNewCDataBlock (xmlDocPtr doc,
  421.  const xmlChar *content,
  422.  int len);
  423. xmlNodePtr xmlNewCharRef (xmlDocPtr doc,
  424.  const xmlChar *name);
  425. xmlNodePtr xmlNewReference (xmlDocPtr doc,
  426.  const xmlChar *name);
  427. xmlNodePtr xmlCopyNode (xmlNodePtr node,
  428.  int recursive);
  429. xmlNodePtr xmlCopyNodeList (xmlNodePtr node);
  430. xmlNodePtr xmlNewDocFragment (xmlDocPtr doc);
  431. /*
  432.  * Navigating
  433.  */
  434. xmlNodePtr xmlDocGetRootElement (xmlDocPtr doc);
  435. xmlNodePtr xmlGetLastChild (xmlNodePtr parent);
  436. int xmlNodeIsText (xmlNodePtr node);
  437. int xmlIsBlankNode (xmlNodePtr node);
  438. /*
  439.  * Changing the structure
  440.  */
  441. xmlNodePtr xmlDocSetRootElement (xmlDocPtr doc,
  442.  xmlNodePtr root);
  443. void xmlNodeSetName (xmlNodePtr cur,
  444.  const xmlChar *name);
  445. xmlNodePtr xmlAddChild (xmlNodePtr parent,
  446.  xmlNodePtr cur);
  447. xmlNodePtr xmlReplaceNode (xmlNodePtr old,
  448.  xmlNodePtr cur);
  449. xmlNodePtr xmlAddSibling (xmlNodePtr cur,
  450.  xmlNodePtr elem);
  451. xmlNodePtr xmlAddPrevSibling (xmlNodePtr cur,
  452.  xmlNodePtr elem);
  453. xmlNodePtr xmlAddNextSibling (xmlNodePtr cur,
  454.  xmlNodePtr elem);
  455. void xmlUnlinkNode (xmlNodePtr cur);
  456. xmlNodePtr xmlTextMerge (xmlNodePtr first,
  457.  xmlNodePtr second);
  458. void xmlTextConcat (xmlNodePtr node,
  459.  const xmlChar *content,
  460.  int len);
  461. void xmlFreeNodeList (xmlNodePtr cur);
  462. void xmlFreeNode (xmlNodePtr cur);
  463. int xmlRemoveProp (xmlAttrPtr cur);
  464. /*
  465.  * Namespaces
  466.  */
  467. xmlNsPtr xmlSearchNs (xmlDocPtr doc,
  468.  xmlNodePtr node,
  469.  const xmlChar *nameSpace);
  470. xmlNsPtr xmlSearchNsByHref (xmlDocPtr doc,
  471.  xmlNodePtr node,
  472.  const xmlChar *href);
  473. xmlNsPtr * xmlGetNsList (xmlDocPtr doc,
  474.  xmlNodePtr node);
  475. void xmlSetNs (xmlNodePtr node,
  476.  xmlNsPtr ns);
  477. xmlNsPtr xmlCopyNamespace (xmlNsPtr cur);
  478. xmlNsPtr xmlCopyNamespaceList (xmlNsPtr cur);
  479. /*
  480.  * Changing the content.
  481.  */
  482. xmlAttrPtr xmlSetProp (xmlNodePtr node,
  483.  const xmlChar *name,
  484.  const xmlChar *value);
  485. xmlChar * xmlGetProp (xmlNodePtr node,
  486.  const xmlChar *name);
  487. xmlChar * xmlGetNsProp (xmlNodePtr node,
  488.  const xmlChar *name,
  489.  const xmlChar *nameSpace);
  490. xmlNodePtr xmlStringGetNodeList (xmlDocPtr doc,
  491.  const xmlChar *value);
  492. xmlNodePtr xmlStringLenGetNodeList (xmlDocPtr doc,
  493.  const xmlChar *value,
  494.  int len);
  495. xmlChar * xmlNodeListGetString (xmlDocPtr doc,
  496.  xmlNodePtr list,
  497.  int inLine);
  498. void xmlNodeSetContent (xmlNodePtr cur,
  499.  const xmlChar *content);
  500. void xmlNodeSetContentLen (xmlNodePtr cur,
  501.  const xmlChar *content,
  502.  int len);
  503. void xmlNodeAddContent (xmlNodePtr cur,
  504.  const xmlChar *content);
  505. void xmlNodeAddContentLen (xmlNodePtr cur,
  506.  const xmlChar *content,
  507.  int len);
  508. xmlChar * xmlNodeGetContent (xmlNodePtr cur);
  509. xmlChar * xmlNodeGetLang (xmlNodePtr cur);
  510. void xmlNodeSetLang (xmlNodePtr cur,
  511.  const xmlChar *lang);
  512. int xmlNodeGetSpacePreserve (xmlNodePtr cur);
  513. xmlChar * xmlNodeGetBase (xmlDocPtr doc,
  514.  xmlNodePtr cur);
  515. /*
  516.  * Removing content.
  517.  */
  518. int xmlRemoveProp (xmlAttrPtr attr);
  519. int xmlRemoveNode (xmlNodePtr node); /* TODO */
  520. /*
  521.  * Internal, don't use
  522.  */
  523. void xmlBufferWriteCHAR (xmlBufferPtr buf,
  524.  const xmlChar *string);
  525. void xmlBufferWriteChar (xmlBufferPtr buf,
  526.  const char *string);
  527. void xmlBufferWriteQuotedString(xmlBufferPtr buf,
  528.  const xmlChar *string);
  529. /*
  530.  * Namespace handling
  531.  */
  532. int xmlReconciliateNs (xmlDocPtr doc,
  533.  xmlNodePtr tree);
  534. /*
  535.  * Saving
  536.  */
  537. void xmlDocDumpMemory (xmlDocPtr cur,
  538.  xmlChar**mem,
  539.  int *size);
  540. void xmlDocDump (FILE *f,
  541.  xmlDocPtr cur);
  542. void xmlElemDump (FILE *f,
  543.  xmlDocPtr cur,
  544.  xmlNodePtr elem);
  545. int xmlSaveFile (const char *filename,
  546.  xmlDocPtr cur);
  547. /*
  548.  * Compression
  549.  */
  550. int xmlGetDocCompressMode (xmlDocPtr doc);
  551. void xmlSetDocCompressMode (xmlDocPtr doc,
  552.  int mode);
  553. int xmlGetCompressMode (void);
  554. void xmlSetCompressMode (int mode);
  555. #ifdef __cplusplus
  556. }
  557. #endif
  558. #endif /* __XML_TREE_H__ */