00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00031
00032 #ifndef _IXML_H_
00033 #define _IXML_H_
00034
00035 #include <stdio.h>
00036 #include <string.h>
00037 #include <assert.h>
00038
00039 #ifdef WIN32
00040 #ifndef UPNP_STATIC_LIB
00041 #ifdef LIBUPNP_EXPORTS
00042
00043 #define EXPORT_SPEC __declspec(dllexport)
00044 #else
00045 #define EXPORT_SPEC __declspec(dllimport)
00046 #endif
00047 #else
00048 #define EXPORT_SPEC
00049 #endif
00050 #else
00051 #define EXPORT_SPEC
00052 #endif
00053
00054 typedef int BOOL;
00055
00056 #define DOMString char *
00057
00058
00059 #ifndef TRUE
00060 #define TRUE 1
00061 #endif
00062
00063 #ifndef FALSE
00064 #define FALSE 0
00065 #endif
00066
00067 #ifndef IN
00068 #define IN
00069 #endif
00070
00071 #ifndef OUT
00072 #define OUT
00073 #endif
00074
00075 #ifndef INOUT
00076 #define INOUT
00077 #endif
00078
00091
00092
00093
00094
00095
00096
00097
00098 typedef enum
00099 {
00100 eINVALID_NODE = 0,
00101 eELEMENT_NODE = 1,
00102 eATTRIBUTE_NODE = 2,
00103 eTEXT_NODE = 3,
00104 eCDATA_SECTION_NODE = 4,
00105 eENTITY_REFERENCE_NODE = 5,
00106 eENTITY_NODE = 6,
00107 ePROCESSING_INSTRUCTION_NODE = 7,
00108 eCOMMENT_NODE = 8,
00109 eDOCUMENT_NODE = 9,
00110 eDOCUMENT_TYPE_NODE = 10,
00111 eDOCUMENT_FRAGMENT_NODE = 11,
00112 eNOTATION_NODE = 12,
00113
00114 } IXML_NODE_TYPE;
00115
00116
00117
00118
00119
00120
00121
00122 typedef enum
00123 {
00124 IXML_INDEX_SIZE_ERR = 1,
00125 IXML_DOMSTRING_SIZE_ERR = 2,
00126 IXML_HIERARCHY_REQUEST_ERR = 3,
00127 IXML_WRONG_DOCUMENT_ERR = 4,
00128 IXML_INVALID_CHARACTER_ERR = 5,
00129 IXML_NO_DATA_ALLOWED_ERR = 6,
00130 IXML_NO_MODIFICATION_ALLOWED_ERR = 7,
00131 IXML_NOT_FOUND_ERR = 8,
00132 IXML_NOT_SUPPORTED_ERR = 9,
00133 IXML_INUSE_ATTRIBUTE_ERR = 10,
00134 IXML_INVALID_STATE_ERR = 11,
00135 IXML_SYNTAX_ERR = 12,
00136 IXML_INVALID_MODIFICATION_ERR = 13,
00137 IXML_NAMESPACE_ERR = 14,
00138 IXML_INVALID_ACCESS_ERR = 15,
00139
00140 IXML_SUCCESS = 0,
00141 IXML_NO_SUCH_FILE = 101,
00142 IXML_INSUFFICIENT_MEMORY = 102,
00143 IXML_FILE_DONE = 104,
00144 IXML_INVALID_PARAMETER = 105,
00145 IXML_FAILED = 106,
00146 IXML_INVALID_ITEM_NUMBER = 107,
00147
00148 } IXML_ERRORCODE;
00149
00150
00151 #define DOCUMENTNODENAME "#document"
00152 #define TEXTNODENAME "#text"
00153 #define CDATANODENAME "#cdata-section"
00154
00155
00156
00157
00158
00159
00160
00161 typedef struct _IXML_Document *Docptr;
00162
00163 typedef struct _IXML_Node *Nodeptr;
00164 typedef struct _IXML_Node
00165 {
00166 DOMString nodeName;
00167 DOMString nodeValue;
00168 IXML_NODE_TYPE nodeType;
00169 DOMString namespaceURI;
00170 DOMString prefix;
00171 DOMString localName;
00172 BOOL readOnly;
00173
00174 Nodeptr parentNode;
00175 Nodeptr firstChild;
00176 Nodeptr prevSibling;
00177 Nodeptr nextSibling;
00178 Nodeptr firstAttr;
00179 Docptr ownerDocument;
00180
00181 } IXML_Node;
00182
00183 typedef struct _IXML_Document
00184 {
00185 IXML_Node n;
00186 } IXML_Document;
00187
00188 typedef struct _IXML_CDATASection
00189 {
00190 IXML_Node n;
00191 } IXML_CDATASection;
00192
00193 typedef struct _IXML_Element
00194 {
00195 IXML_Node n;
00196 DOMString tagName;
00197
00198 } IXML_Element;
00199
00200 typedef struct _IXML_ATTR
00201 {
00202 IXML_Node n;
00203 BOOL specified;
00204 IXML_Element *ownerElement;
00205 } IXML_Attr;
00206
00207 typedef struct _IXML_Text
00208 {
00209 IXML_Node n;
00210 } IXML_Text;
00211
00212 typedef struct _IXML_NodeList
00213 {
00214 IXML_Node *nodeItem;
00215 struct _IXML_NodeList *next;
00216 } IXML_NodeList;
00217
00218
00219 typedef struct _IXML_NamedNodeMap
00220 {
00221 IXML_Node *nodeItem;
00222 struct _IXML_NamedNodeMap *next;
00223 } IXML_NamedNodeMap;
00224
00225 #ifdef __cplusplus
00226 extern "C" {
00227 #endif
00228
00229
00230
00231
00232
00233
00234
00235
00243
00251 EXPORT_SPEC const DOMString
00252 ixmlNode_getNodeName(IXML_Node *nodeptr
00254 );
00255
00262 EXPORT_SPEC const DOMString
00263 ixmlNode_getNodeValue(IXML_Node *nodeptr
00265 );
00266
00281 EXPORT_SPEC int
00282 ixmlNode_setNodeValue(IXML_Node *nodeptr,
00284 const char *newNodeValue
00286 );
00287
00309 EXPORT_SPEC unsigned short
00310 ixmlNode_getNodeType(IXML_Node *nodeptr
00312 );
00313
00320 EXPORT_SPEC IXML_Node*
00321 ixmlNode_getParentNode(IXML_Node *nodeptr
00324 );
00325
00333 EXPORT_SPEC IXML_NodeList*
00334 ixmlNode_getChildNodes(IXML_Node *nodeptr
00337 );
00338
00345 EXPORT_SPEC IXML_Node*
00346 ixmlNode_getFirstChild(IXML_Node *nodeptr
00349 );
00350
00357 EXPORT_SPEC IXML_Node*
00358 ixmlNode_getLastChild(IXML_Node *nodeptr
00361 );
00362
00369 EXPORT_SPEC IXML_Node*
00370 ixmlNode_getPreviousSibling(IXML_Node *nodeptr
00373 );
00374
00381 EXPORT_SPEC IXML_Node*
00382 ixmlNode_getNextSibling(IXML_Node *nodeptr
00385 );
00386
00394 EXPORT_SPEC IXML_NamedNodeMap*
00395 ixmlNode_getAttributes(IXML_Node *nodeptr
00398 );
00399
00409 EXPORT_SPEC IXML_Document*
00410 ixmlNode_getOwnerDocument(IXML_Node *nodeptr
00413 );
00414
00425 EXPORT_SPEC const DOMString
00426 ixmlNode_getNamespaceURI(IXML_Node *nodeptr
00429 );
00430
00441 EXPORT_SPEC const DOMString
00442 ixmlNode_getPrefix(IXML_Node *nodeptr
00444 );
00445
00456 EXPORT_SPEC const DOMString
00457 ixmlNode_getLocalName(IXML_Node *nodeptr
00460 );
00461
00488 EXPORT_SPEC int
00489 ixmlNode_insertBefore(IXML_Node *nodeptr,
00492 IXML_Node* newChild,
00494 IXML_Node* refChild
00498 );
00499
00523 EXPORT_SPEC int
00524 ixmlNode_replaceChild(IXML_Node *nodeptr,
00527 IXML_Node* newChild,
00529 IXML_Node* oldChild,
00531 IXML_Node** returnNode
00534 );
00535
00553 EXPORT_SPEC int
00554 ixmlNode_removeChild(IXML_Node *nodeptr,
00556 IXML_Node* oldChild,
00558 IXML_Node **returnNode
00561 );
00562
00580 EXPORT_SPEC int
00581 ixmlNode_appendChild(IXML_Node *nodeptr,
00583 IXML_Node* newChild
00585 );
00586
00593 EXPORT_SPEC BOOL
00594 ixmlNode_hasChildNodes(IXML_Node *nodeptr
00596 );
00597
00606 EXPORT_SPEC IXML_Node*
00607 ixmlNode_cloneNode(IXML_Node *nodeptr,
00609 BOOL deep
00612 );
00613
00621 EXPORT_SPEC BOOL
00622 ixmlNode_hasAttributes(IXML_Node *node
00624 );
00625
00631 EXPORT_SPEC void
00632 ixmlNode_free(IXML_Node *IXML_Node
00634 );
00635
00637
00638
00639
00640
00641
00642
00643
00644
00652
00653
00659 EXPORT_SPEC void
00660 ixmlAttr_free(IXML_Attr *attrNode
00662 );
00663
00665
00666
00667
00668
00669
00670
00671
00672
00673
00683
00684
00690 EXPORT_SPEC void
00691 ixmlCDATASection_init(IXML_CDATASection *nodeptr
00693 );
00694
00695
00701 EXPORT_SPEC void
00702 ixmlCDATASection_free(IXML_CDATASection *nodeptr
00704 );
00705
00707
00708
00709
00710
00711
00712
00713
00714
00722
00728 EXPORT_SPEC void
00729 ixmlDocument_init(IXML_Document *nodeptr
00731 );
00732
00746 EXPORT_SPEC int ixmlDocument_createDocumentEx(IXML_Document** doc
00749 );
00750
00751
00758 EXPORT_SPEC IXML_Document* ixmlDocument_createDocument();
00759
00780 EXPORT_SPEC int
00781 ixmlDocument_createElementEx(IXML_Document *doc,
00783 const DOMString tagName,
00786 IXML_Element **rtElement
00789 );
00790
00801 EXPORT_SPEC IXML_Element*
00802 ixmlDocument_createElement(IXML_Document *doc,
00804 const DOMString tagName
00806 );
00807
00808
00824 EXPORT_SPEC int
00825 ixmlDocument_createTextNodeEx(IXML_Document *doc,
00827 const DOMString data,
00830 IXML_Node** textNode
00833 );
00834
00835
00841 EXPORT_SPEC IXML_Node*
00842 ixmlDocument_createTextNode(IXML_Document *doc,
00844 const DOMString data
00847 );
00848
00865 EXPORT_SPEC int
00866 ixmlDocument_createCDATASectionEx(IXML_Document *doc,
00869 const DOMString data,
00872 IXML_CDATASection** cdNode
00875 );
00876
00877
00884 EXPORT_SPEC IXML_CDATASection*
00885 ixmlDocument_createCDATASection(IXML_Document *doc,
00888 const DOMString data
00891 );
00892
00898 EXPORT_SPEC IXML_Attr*
00899 ixmlDocument_createAttribute(IXML_Document *doc,
00901 const char *name
00903 );
00904
00905
00922 EXPORT_SPEC int
00923 ixmlDocument_createAttributeEx(IXML_Document *doc,
00926 const char *name,
00928 IXML_Attr** attrNode
00931 );
00932
00933
00942 EXPORT_SPEC IXML_NodeList*
00943 ixmlDocument_getElementsByTagName(IXML_Document *doc,
00945 const DOMString tagName
00947 );
00948
00949
00950
00968 EXPORT_SPEC int
00969 ixmlDocument_createElementNSEx(IXML_Document *doc,
00972 const DOMString namespaceURI,
00975 const DOMString qualifiedName,
00978 IXML_Element** rtElement
00981 );
00982
00983
00991 EXPORT_SPEC IXML_Element*
00992 ixmlDocument_createElementNS(IXML_Document *doc,
00994 const DOMString namespaceURI,
00997 const DOMString qualifiedName
01000 );
01001
01019 EXPORT_SPEC int
01020 ixmlDocument_createAttributeNSEx(IXML_Document *doc,
01023 const DOMString namespaceURI,
01025 const DOMString qualifiedName,
01027 IXML_Attr** attrNode
01030 );
01031
01038 EXPORT_SPEC IXML_Attr*
01039 ixmlDocument_createAttributeNS(IXML_Document *doc,
01042 const DOMString namespaceURI,
01044 const DOMString qualifiedName
01046 );
01047
01058 EXPORT_SPEC IXML_NodeList*
01059 ixmlDocument_getElementsByTagNameNS(IXML_Document* doc,
01061 const DOMString namespaceURI,
01065 const DOMString localName
01069 );
01070
01077 EXPORT_SPEC IXML_Element*
01078 ixmlDocument_getElementById(IXML_Document* doc,
01081 const DOMString tagName
01083 );
01084
01093 EXPORT_SPEC void
01094 ixmlDocument_free(IXML_Document* doc
01096 );
01097
01117 EXPORT_SPEC int
01118 ixmlDocument_importNode(IXML_Document* doc,
01120 IXML_Node* importNode,
01122 BOOL deep,
01126 IXML_Node** rtNode
01129 );
01131
01132
01133
01134
01135
01136
01137
01138
01147
01153 EXPORT_SPEC void ixmlElement_init(IXML_Element *element
01155 );
01156
01157
01164 EXPORT_SPEC const DOMString
01165 ixmlElement_getTagName(IXML_Element* element
01168 );
01169
01176 EXPORT_SPEC const DOMString
01177 ixmlElement_getAttribute(IXML_Element* element,
01180 const DOMString name
01182 );
01183
01200 EXPORT_SPEC int
01201 ixmlElement_setAttribute(IXML_Element* element,
01204 const DOMString name,
01206 const DOMString value
01210 );
01211
01222 EXPORT_SPEC int
01223 ixmlElement_removeAttribute(IXML_Element* element,
01226 const DOMString name
01228 );
01229
01238 EXPORT_SPEC IXML_Attr*
01239 ixmlElement_getAttributeNode(IXML_Element* element,
01242 const DOMString name
01244 );
01245
01262 EXPORT_SPEC int
01263 ixmlElement_setAttributeNode(IXML_Element* element,
01266 IXML_Attr* newAttr,
01268 IXML_Attr** rtAttr
01273 );
01274
01287 EXPORT_SPEC int
01288 ixmlElement_removeAttributeNode(IXML_Element* element,
01291 IXML_Attr* oldAttr,
01294 IXML_Attr** rtAttr
01297 );
01298
01307 EXPORT_SPEC IXML_NodeList*
01308 ixmlElement_getElementsByTagName(IXML_Element* element,
01311 const DOMString tagName
01314 );
01315
01316
01317
01324 EXPORT_SPEC const DOMString
01325 ixmlElement_getAttributeNS(IXML_Element* element,
01328 const DOMString namespaceURI,
01330 const DOMString localname
01332 );
01333
01356 EXPORT_SPEC int
01357 ixmlElement_setAttributeNS(IXML_Element* element,
01360 const DOMString namespaceURI,
01362 const DOMString qualifiedName,
01364 const DOMString value
01366 );
01367
01378 EXPORT_SPEC int
01379 ixmlElement_removeAttributeNS(IXML_Element* element,
01382 const DOMString namespaceURI,
01384 const DOMString localName
01386 );
01387
01393 EXPORT_SPEC IXML_Attr*
01394 ixmlElement_getAttributeNodeNS(IXML_Element* element,
01397 const DOMString namespaceURI,
01399 const DOMString localName
01401 );
01402
01420 EXPORT_SPEC int
01421 ixmlElement_setAttributeNodeNS(IXML_Element* element,
01424 IXML_Attr* newAttr,
01426 IXML_Attr** rcAttr
01429 );
01430
01439 EXPORT_SPEC IXML_NodeList*
01440 ixmlElement_getElementsByTagNameNS(IXML_Element* element,
01443 const DOMString namespaceURI,
01446 const DOMString localName
01449 );
01450
01459 EXPORT_SPEC BOOL
01460 ixmlElement_hasAttribute(IXML_Element* element,
01463 const DOMString name
01465 );
01466
01475 EXPORT_SPEC BOOL
01476 ixmlElement_hasAttributeNS(IXML_Element* element,
01479 const DOMString namespaceURI,
01481 const DOMString localName
01483 );
01484
01490 EXPORT_SPEC void
01491 ixmlElement_free(IXML_Element* element
01493 );
01494
01496
01497
01498
01499
01500
01501
01502
01503
01511
01517 EXPORT_SPEC unsigned long
01518 ixmlNamedNodeMap_getLength(IXML_NamedNodeMap *nnMap
01521 );
01522
01528 EXPORT_SPEC IXML_Node*
01529 ixmlNamedNodeMap_getNamedItem(IXML_NamedNodeMap *nnMap,
01531 const DOMString name
01533 );
01534
01543 EXPORT_SPEC IXML_Node*
01544 ixmlNamedNodeMap_setNamedItem(IXML_NamedNodeMap *nnMap,
01547 IXML_Node *arg
01550 );
01551
01558 EXPORT_SPEC IXML_Node*
01559 ixmlNamedNodeMap_removeNamedItem(IXML_NamedNodeMap *nnMap,
01562 const DOMString name
01564 );
01565
01573 EXPORT_SPEC IXML_Node*
01574 ixmlNamedNodeMap_item(IXML_NamedNodeMap *nnMap,
01577 unsigned long index
01579 );
01580
01581
01582
01590 EXPORT_SPEC IXML_Node*
01591 ixmlNamedNodeMap_getNamedItemNS(IXML_NamedNodeMap *nnMap,
01594 const DOMString *namespaceURI,
01597 const DOMString localName
01600 );
01601
01610 EXPORT_SPEC IXML_Node*
01611 ixmlNamedNodeMap_setNamedItemNS(IXML_NamedNodeMap *nnMap,
01614 IXML_Node *arg
01616 );
01617
01625 EXPORT_SPEC IXML_Node*
01626 ixmlNamedNodeMap_removeNamedItemNS(IXML_NamedNodeMap *nnMap,
01629 const DOMString namespaceURI,
01632 const DOMString localName
01635 );
01636
01643 EXPORT_SPEC void
01644 ixmlNamedNodeMap_free(IXML_NamedNodeMap *nnMap
01646 );
01647
01649
01650
01651
01652
01653
01654
01655
01656
01664
01672 EXPORT_SPEC IXML_Node*
01673 ixmlNodeList_item(IXML_NodeList *nList,
01676 unsigned long index
01678 );
01679
01685 EXPORT_SPEC unsigned long
01686 ixmlNodeList_length(IXML_NodeList *nList
01689 );
01690
01698 EXPORT_SPEC void
01699 ixmlNodeList_free(IXML_NodeList *nList
01701 );
01702
01704
01705
01713
01714
01715
01716
01717
01718
01719
01720
01740 DOMString
01741 ixmlPrintDocument(IXML_Document *doc);
01742
01758 DOMString
01759 ixmlPrintNode(IXML_Node *doc
01761 );
01762
01779 DOMString
01780 ixmlDocumenttoString(IXML_Document *doc);
01781
01796 EXPORT_SPEC DOMString
01797 ixmlNodetoString(IXML_Node *doc
01799 );
01800
01801
01811 void
01812 ixmlRelaxParser(char errorChar);
01813
01814
01820 EXPORT_SPEC IXML_Document*
01821 ixmlParseBuffer(const char *buffer
01824 );
01825
01826
01843 EXPORT_SPEC int
01844 ixmlParseBufferEx(const char *buffer,
01847 IXML_Document** doc
01850 );
01851
01858 EXPORT_SPEC IXML_Document*
01859 ixmlLoadDocument(const char* xmlFile
01862 );
01863
01880 EXPORT_SPEC int
01881 ixmlLoadDocumentEx(const char* xmlFile,
01884 IXML_Document** doc
01887 );
01888
01896 EXPORT_SPEC DOMString
01897 ixmlCloneDOMString(const DOMString src
01899 );
01900
01906 EXPORT_SPEC void
01907 ixmlFreeDOMString(DOMString buf
01909 );
01910
01911 #ifdef __cplusplus
01912 }
01913 #endif
01914
01916
01917 #endif // _IXML_H_