xmlreader.h

Go to the documentation of this file.
00001 /*
00002  * Summary: the XMLReader implementation
00003  * Description: API of the XML streaming API based on C# interfaces.
00004  *
00005  * Copy: See Copyright for the status of this software.
00006  *
00007  * Author: Daniel Veillard
00008  */
00009 
00010 #ifndef __XML_XMLREADER_H__
00011 #define __XML_XMLREADER_H__
00012 
00013 #include <libxml/xmlversion.h>
00014 #include <libxml/tree.h>
00015 #include <libxml/xmlIO.h>
00016 #ifdef LIBXML_SCHEMAS_ENABLED
00017 #include <libxml/relaxng.h>
00018 #include <libxml/xmlschemas.h>
00019 #endif
00020 
00021 #ifdef LIBXML_READER_ENABLED
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00032 typedef enum {
00033     XML_TEXTREADER_MODE_INITIAL = 0,
00034     XML_TEXTREADER_MODE_INTERACTIVE = 1,
00035     XML_TEXTREADER_MODE_ERROR = 2,
00036     XML_TEXTREADER_MODE_EOF =3,
00037     XML_TEXTREADER_MODE_CLOSED = 4,
00038     XML_TEXTREADER_MODE_READING = 5
00039 } xmlTextReaderMode;
00040 
00048 typedef enum {
00049     XML_PARSER_LOADDTD = 1,
00050     XML_PARSER_DEFAULTATTRS = 2,
00051     XML_PARSER_VALIDATE = 3,
00052     XML_PARSER_SUBST_ENTITIES = 4
00053 } xmlParserProperties;
00054 
00061 typedef enum {
00062     XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
00063     XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
00064     XML_PARSER_SEVERITY_WARNING = 3,
00065     XML_PARSER_SEVERITY_ERROR = 4
00066 } xmlParserSeverities;
00067 
00073 typedef enum {
00074     XML_READER_TYPE_NONE = 0,
00075     XML_READER_TYPE_ELEMENT = 1,
00076     XML_READER_TYPE_ATTRIBUTE = 2,
00077     XML_READER_TYPE_TEXT = 3,
00078     XML_READER_TYPE_CDATA = 4,
00079     XML_READER_TYPE_ENTITY_REFERENCE = 5,
00080     XML_READER_TYPE_ENTITY = 6,
00081     XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
00082     XML_READER_TYPE_COMMENT = 8,
00083     XML_READER_TYPE_DOCUMENT = 9,
00084     XML_READER_TYPE_DOCUMENT_TYPE = 10,
00085     XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
00086     XML_READER_TYPE_NOTATION = 12,
00087     XML_READER_TYPE_WHITESPACE = 13,
00088     XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
00089     XML_READER_TYPE_END_ELEMENT = 15,
00090     XML_READER_TYPE_END_ENTITY = 16,
00091     XML_READER_TYPE_XML_DECLARATION = 17
00092 } xmlReaderTypes;
00093 
00099 typedef struct _xmlTextReader xmlTextReader;
00100 
00106 typedef xmlTextReader *xmlTextReaderPtr;
00107 
00108 /*
00109  * Constructors & Destructor
00110  */
00111 XMLPUBFUN xmlTextReaderPtr XMLCALL
00112             xmlNewTextReader    (xmlParserInputBufferPtr input,
00113                                              const char *URI);
00114 XMLPUBFUN xmlTextReaderPtr XMLCALL  
00115             xmlNewTextReaderFilename(const char *URI);
00116 XMLPUBFUN void XMLCALL          
00117             xmlFreeTextReader   (xmlTextReaderPtr reader);
00118 
00119 /*
00120  * Iterators
00121  */
00122 XMLPUBFUN int XMLCALL       
00123             xmlTextReaderRead   (xmlTextReaderPtr reader);
00124 
00125 #ifdef LIBXML_WRITER_ENABLED
00126 XMLPUBFUN xmlChar * XMLCALL 
00127             xmlTextReaderReadInnerXml   (xmlTextReaderPtr reader);
00128             
00129 XMLPUBFUN xmlChar * XMLCALL 
00130             xmlTextReaderReadOuterXml   (xmlTextReaderPtr reader);
00131 #endif
00132 
00133 XMLPUBFUN xmlChar * XMLCALL 
00134             xmlTextReaderReadString     (xmlTextReaderPtr reader);
00135 XMLPUBFUN int XMLCALL       
00136             xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader);
00137 
00138 /*
00139  * Attributes of the node
00140  */
00141 XMLPUBFUN int XMLCALL       
00142             xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
00143 XMLPUBFUN int XMLCALL       
00144             xmlTextReaderDepth  (xmlTextReaderPtr reader);
00145 XMLPUBFUN int XMLCALL       
00146             xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
00147 XMLPUBFUN int XMLCALL       
00148             xmlTextReaderHasValue(xmlTextReaderPtr reader);
00149 XMLPUBFUN int XMLCALL       
00150             xmlTextReaderIsDefault  (xmlTextReaderPtr reader);
00151 XMLPUBFUN int XMLCALL       
00152             xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
00153 XMLPUBFUN int XMLCALL       
00154             xmlTextReaderNodeType   (xmlTextReaderPtr reader);
00155 XMLPUBFUN int XMLCALL       
00156             xmlTextReaderQuoteChar  (xmlTextReaderPtr reader);
00157 XMLPUBFUN int XMLCALL       
00158             xmlTextReaderReadState  (xmlTextReaderPtr reader);
00159 XMLPUBFUN int XMLCALL
00160                         xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
00161 
00162 XMLPUBFUN const xmlChar * XMLCALL   
00163             xmlTextReaderConstBaseUri   (xmlTextReaderPtr reader);
00164 XMLPUBFUN const xmlChar * XMLCALL   
00165             xmlTextReaderConstLocalName (xmlTextReaderPtr reader);
00166 XMLPUBFUN const xmlChar * XMLCALL   
00167             xmlTextReaderConstName  (xmlTextReaderPtr reader);
00168 XMLPUBFUN const xmlChar * XMLCALL   
00169             xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
00170 XMLPUBFUN const xmlChar * XMLCALL   
00171             xmlTextReaderConstPrefix    (xmlTextReaderPtr reader);
00172 XMLPUBFUN const xmlChar * XMLCALL   
00173             xmlTextReaderConstXmlLang   (xmlTextReaderPtr reader);
00174 XMLPUBFUN const xmlChar * XMLCALL   
00175             xmlTextReaderConstString    (xmlTextReaderPtr reader,
00176                              const xmlChar *str);
00177 XMLPUBFUN const xmlChar * XMLCALL   
00178             xmlTextReaderConstValue (xmlTextReaderPtr reader);
00179 
00180 /*
00181  * use the Const version of the routine for
00182  * better performance and simpler code
00183  */
00184 XMLPUBFUN xmlChar * XMLCALL 
00185             xmlTextReaderBaseUri    (xmlTextReaderPtr reader);
00186 XMLPUBFUN xmlChar * XMLCALL 
00187             xmlTextReaderLocalName  (xmlTextReaderPtr reader);
00188 XMLPUBFUN xmlChar * XMLCALL 
00189             xmlTextReaderName   (xmlTextReaderPtr reader);
00190 XMLPUBFUN xmlChar * XMLCALL 
00191             xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
00192 XMLPUBFUN xmlChar * XMLCALL 
00193             xmlTextReaderPrefix (xmlTextReaderPtr reader);
00194 XMLPUBFUN xmlChar * XMLCALL 
00195             xmlTextReaderXmlLang    (xmlTextReaderPtr reader);
00196 XMLPUBFUN xmlChar * XMLCALL 
00197             xmlTextReaderValue  (xmlTextReaderPtr reader);
00198 
00199 /*
00200  * Methods of the XmlTextReader
00201  */
00202 XMLPUBFUN int XMLCALL       
00203             xmlTextReaderClose      (xmlTextReaderPtr reader);
00204 XMLPUBFUN xmlChar * XMLCALL 
00205             xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader,
00206                          int no);
00207 XMLPUBFUN xmlChar * XMLCALL 
00208             xmlTextReaderGetAttribute   (xmlTextReaderPtr reader,
00209                          const xmlChar *name);
00210 XMLPUBFUN xmlChar * XMLCALL 
00211             xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader,
00212                          const xmlChar *localName,
00213                          const xmlChar *namespaceURI);
00214 XMLPUBFUN xmlParserInputBufferPtr XMLCALL 
00215             xmlTextReaderGetRemainder   (xmlTextReaderPtr reader);
00216 XMLPUBFUN xmlChar * XMLCALL 
00217             xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
00218                          const xmlChar *prefix);
00219 XMLPUBFUN int XMLCALL       
00220             xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
00221                          int no);
00222 XMLPUBFUN int XMLCALL       
00223             xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
00224                          const xmlChar *name);
00225 XMLPUBFUN int XMLCALL       
00226             xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
00227                          const xmlChar *localName,
00228                          const xmlChar *namespaceURI);
00229 XMLPUBFUN int XMLCALL       
00230             xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
00231 XMLPUBFUN int XMLCALL       
00232             xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
00233 XMLPUBFUN int XMLCALL       
00234             xmlTextReaderMoveToElement  (xmlTextReaderPtr reader);
00235 XMLPUBFUN int XMLCALL       
00236             xmlTextReaderNormalization  (xmlTextReaderPtr reader);
00237 XMLPUBFUN const xmlChar * XMLCALL
00238             xmlTextReaderConstEncoding  (xmlTextReaderPtr reader);
00239 
00240 /*
00241  * Extensions
00242  */
00243 XMLPUBFUN int XMLCALL       
00244             xmlTextReaderSetParserProp  (xmlTextReaderPtr reader,
00245                          int prop,
00246                          int value);
00247 XMLPUBFUN int XMLCALL       
00248             xmlTextReaderGetParserProp  (xmlTextReaderPtr reader,
00249                          int prop);
00250 XMLPUBFUN xmlNodePtr XMLCALL    
00251             xmlTextReaderCurrentNode    (xmlTextReaderPtr reader);
00252 
00253 XMLPUBFUN int XMLCALL
00254             xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
00255 
00256 XMLPUBFUN int XMLCALL
00257             xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
00258 
00259 XMLPUBFUN xmlNodePtr XMLCALL    
00260             xmlTextReaderPreserve   (xmlTextReaderPtr reader);
00261 #ifdef LIBXML_PATTERN_ENABLED
00262 XMLPUBFUN int XMLCALL   
00263             xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
00264                              const xmlChar *pattern,
00265                          const xmlChar **namespaces);
00266 #endif /* LIBXML_PATTERN_ENABLED */
00267 XMLPUBFUN xmlDocPtr XMLCALL 
00268             xmlTextReaderCurrentDoc (xmlTextReaderPtr reader);
00269 XMLPUBFUN xmlNodePtr XMLCALL    
00270             xmlTextReaderExpand     (xmlTextReaderPtr reader);
00271 XMLPUBFUN int XMLCALL       
00272             xmlTextReaderNext       (xmlTextReaderPtr reader);
00273 XMLPUBFUN int XMLCALL
00274             xmlTextReaderNextSibling    (xmlTextReaderPtr reader);
00275 XMLPUBFUN int XMLCALL       
00276             xmlTextReaderIsValid    (xmlTextReaderPtr reader);
00277 #ifdef LIBXML_SCHEMAS_ENABLED
00278 XMLPUBFUN int XMLCALL       
00279             xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
00280                          const char *rng);
00281 XMLPUBFUN int XMLCALL       
00282             xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
00283                          xmlRelaxNGPtr schema);
00284 XMLPUBFUN int XMLCALL
00285             xmlTextReaderSchemaValidate (xmlTextReaderPtr reader,
00286                              const char *xsd);
00287 XMLPUBFUN int XMLCALL
00288             xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
00289                          xmlSchemaValidCtxtPtr ctxt,
00290                          int options);
00291 XMLPUBFUN int XMLCALL       
00292             xmlTextReaderSetSchema  (xmlTextReaderPtr reader,
00293                              xmlSchemaPtr schema);
00294 #endif
00295 XMLPUBFUN const xmlChar * XMLCALL
00296             xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
00297 XMLPUBFUN int XMLCALL
00298             xmlTextReaderStandalone     (xmlTextReaderPtr reader);
00299 
00300 
00301 /*
00302  * Index lookup
00303  */
00304 XMLPUBFUN long XMLCALL
00305         xmlTextReaderByteConsumed   (xmlTextReaderPtr reader);
00306 
00307 /*
00308  * New more complete APIs for simpler creation and reuse of readers
00309  */
00310 XMLPUBFUN xmlTextReaderPtr XMLCALL
00311         xmlReaderWalker     (xmlDocPtr doc);
00312 XMLPUBFUN xmlTextReaderPtr XMLCALL
00313         xmlReaderForDoc     (const xmlChar * cur,
00314                      const char *URL,
00315                      const char *encoding,
00316                      int options);
00317 XMLPUBFUN xmlTextReaderPtr XMLCALL
00318         xmlReaderForFile    (const char *filename,
00319                      const char *encoding,
00320                      int options);
00321 XMLPUBFUN xmlTextReaderPtr XMLCALL
00322         xmlReaderForMemory  (const char *buffer,
00323                      int size,
00324                      const char *URL,
00325                      const char *encoding,
00326                      int options);
00327 XMLPUBFUN xmlTextReaderPtr XMLCALL
00328         xmlReaderForFd      (int fd,
00329                      const char *URL,
00330                      const char *encoding,
00331                      int options);
00332 XMLPUBFUN xmlTextReaderPtr XMLCALL
00333         xmlReaderForIO      (xmlInputReadCallback ioread,
00334                      xmlInputCloseCallback ioclose,
00335                      void *ioctx,
00336                      const char *URL,
00337                      const char *encoding,
00338                      int options);
00339 
00340 XMLPUBFUN int XMLCALL
00341         xmlReaderNewWalker  (xmlTextReaderPtr reader,
00342                      xmlDocPtr doc);
00343 XMLPUBFUN int XMLCALL
00344         xmlReaderNewDoc     (xmlTextReaderPtr reader,
00345                      const xmlChar * cur,
00346                      const char *URL,
00347                      const char *encoding,
00348                      int options);
00349 XMLPUBFUN int XMLCALL
00350         xmlReaderNewFile    (xmlTextReaderPtr reader,
00351                      const char *filename,
00352                      const char *encoding,
00353                      int options);
00354 XMLPUBFUN int XMLCALL
00355         xmlReaderNewMemory  (xmlTextReaderPtr reader,
00356                      const char *buffer,
00357                      int size,
00358                      const char *URL,
00359                      const char *encoding,
00360                      int options);
00361 XMLPUBFUN int XMLCALL
00362         xmlReaderNewFd      (xmlTextReaderPtr reader,
00363                      int fd,
00364                      const char *URL,
00365                      const char *encoding,
00366                      int options);
00367 XMLPUBFUN int XMLCALL
00368         xmlReaderNewIO      (xmlTextReaderPtr reader,
00369                      xmlInputReadCallback ioread,
00370                      xmlInputCloseCallback ioclose,
00371                      void *ioctx,
00372                      const char *URL,
00373                      const char *encoding,
00374                      int options);
00375 /*
00376  * Error handling extensions
00377  */
00378 typedef void *  xmlTextReaderLocatorPtr;
00379 typedef void   (XMLCALL *xmlTextReaderErrorFunc)        (void *arg, 
00380                          const char *msg,
00381                          xmlParserSeverities severity,
00382                          xmlTextReaderLocatorPtr locator);
00383 XMLPUBFUN int XMLCALL             
00384             xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
00385 /*int             xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
00386 XMLPUBFUN xmlChar * XMLCALL       
00387             xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
00388 XMLPUBFUN void XMLCALL            
00389             xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, 
00390                          xmlTextReaderErrorFunc f, 
00391                          void *arg);
00392 XMLPUBFUN void XMLCALL
00393             xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
00394                                xmlStructuredErrorFunc f,
00395                                void *arg);
00396 XMLPUBFUN void XMLCALL            
00397             xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, 
00398                          xmlTextReaderErrorFunc *f, 
00399                          void **arg);
00400 
00401 #ifdef __cplusplus
00402 }
00403 #endif
00404 
00405 #endif /* LIBXML_READER_ENABLED */
00406 
00407 #endif /* __XML_XMLREADER_H__ */
00408 
footer
 SourceForge.net Logo