Home | History | Annotate | Download | only in libxml
      1 /*
      2  * Summary: the XMLReader implementation
      3  * Description: API of the XML streaming API based on C# interfaces.
      4  *
      5  * Copy: See Copyright for the status of this software.
      6  *
      7  * Author: Daniel Veillard
      8  */
      9 
     10 #ifndef __XML_XMLREADER_H__
     11 #define __XML_XMLREADER_H__
     12 
     13 #include <libxml/xmlversion.h>
     14 #include <libxml/tree.h>
     15 #include <libxml/xmlIO.h>
     16 #ifdef LIBXML_SCHEMAS_ENABLED
     17 #include <libxml/relaxng.h>
     18 #include <libxml/xmlschemas.h>
     19 #endif
     20 
     21 #ifdef __cplusplus
     22 extern "C" {
     23 #endif
     24 
     25 /**
     26  * xmlParserSeverities:
     27  *
     28  * How severe an error callback is when the per-reader error callback API
     29  * is used.
     30  */
     31 typedef enum {
     32     XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
     33     XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
     34     XML_PARSER_SEVERITY_WARNING = 3,
     35     XML_PARSER_SEVERITY_ERROR = 4
     36 } xmlParserSeverities;
     37 
     38 #ifdef LIBXML_READER_ENABLED
     39 
     40 /**
     41  * xmlTextReaderMode:
     42  *
     43  * Internal state values for the reader.
     44  */
     45 typedef enum {
     46     XML_TEXTREADER_MODE_INITIAL = 0,
     47     XML_TEXTREADER_MODE_INTERACTIVE = 1,
     48     XML_TEXTREADER_MODE_ERROR = 2,
     49     XML_TEXTREADER_MODE_EOF =3,
     50     XML_TEXTREADER_MODE_CLOSED = 4,
     51     XML_TEXTREADER_MODE_READING = 5
     52 } xmlTextReaderMode;
     53 
     54 /**
     55  * xmlParserProperties:
     56  *
     57  * Some common options to use with xmlTextReaderSetParserProp, but it
     58  * is better to use xmlParserOption and the xmlReaderNewxxx and
     59  * xmlReaderForxxx APIs now.
     60  */
     61 typedef enum {
     62     XML_PARSER_LOADDTD = 1,
     63     XML_PARSER_DEFAULTATTRS = 2,
     64     XML_PARSER_VALIDATE = 3,
     65     XML_PARSER_SUBST_ENTITIES = 4
     66 } xmlParserProperties;
     67 
     68 /**
     69  * xmlReaderTypes:
     70  *
     71  * Predefined constants for the different types of nodes.
     72  */
     73 typedef enum {
     74     XML_READER_TYPE_NONE = 0,
     75     XML_READER_TYPE_ELEMENT = 1,
     76     XML_READER_TYPE_ATTRIBUTE = 2,
     77     XML_READER_TYPE_TEXT = 3,
     78     XML_READER_TYPE_CDATA = 4,
     79     XML_READER_TYPE_ENTITY_REFERENCE = 5,
     80     XML_READER_TYPE_ENTITY = 6,
     81     XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
     82     XML_READER_TYPE_COMMENT = 8,
     83     XML_READER_TYPE_DOCUMENT = 9,
     84     XML_READER_TYPE_DOCUMENT_TYPE = 10,
     85     XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
     86     XML_READER_TYPE_NOTATION = 12,
     87     XML_READER_TYPE_WHITESPACE = 13,
     88     XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
     89     XML_READER_TYPE_END_ELEMENT = 15,
     90     XML_READER_TYPE_END_ENTITY = 16,
     91     XML_READER_TYPE_XML_DECLARATION = 17
     92 } xmlReaderTypes;
     93 
     94 /**
     95  * xmlTextReader:
     96  *
     97  * Structure for an xmlReader context.
     98  */
     99 typedef struct _xmlTextReader xmlTextReader;
    100 
    101 /**
    102  * xmlTextReaderPtr:
    103  *
    104  * Pointer to an xmlReader context.
    105  */
    106 typedef xmlTextReader *xmlTextReaderPtr;
    107 
    108 /*
    109  * Constructors & Destructor
    110  */
    111 XMLPUBFUN xmlTextReaderPtr XMLCALL
    112 			xmlNewTextReader	(xmlParserInputBufferPtr input,
    113 	                                         const char *URI);
    114 XMLPUBFUN xmlTextReaderPtr XMLCALL
    115 			xmlNewTextReaderFilename(const char *URI);
    116 
    117 XMLPUBFUN void XMLCALL
    118 			xmlFreeTextReader	(xmlTextReaderPtr reader);
    119 
    120 XMLPUBFUN int XMLCALL
    121             xmlTextReaderSetup(xmlTextReaderPtr reader,
    122                    xmlParserInputBufferPtr input, const char *URL,
    123                    const char *encoding, int options);
    124 
    125 /*
    126  * Iterators
    127  */
    128 XMLPUBFUN int XMLCALL
    129 			xmlTextReaderRead	(xmlTextReaderPtr reader);
    130 
    131 #ifdef LIBXML_WRITER_ENABLED
    132 XMLPUBFUN xmlChar * XMLCALL
    133 			xmlTextReaderReadInnerXml(xmlTextReaderPtr reader);
    134 
    135 XMLPUBFUN xmlChar * XMLCALL
    136 			xmlTextReaderReadOuterXml(xmlTextReaderPtr reader);
    137 #endif
    138 
    139 XMLPUBFUN xmlChar * XMLCALL
    140 			xmlTextReaderReadString	(xmlTextReaderPtr reader);
    141 XMLPUBFUN int XMLCALL
    142 			xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader);
    143 
    144 /*
    145  * Attributes of the node
    146  */
    147 XMLPUBFUN int XMLCALL
    148 			xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
    149 XMLPUBFUN int XMLCALL
    150 			xmlTextReaderDepth	(xmlTextReaderPtr reader);
    151 XMLPUBFUN int XMLCALL
    152 			xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
    153 XMLPUBFUN int XMLCALL
    154 			xmlTextReaderHasValue(xmlTextReaderPtr reader);
    155 XMLPUBFUN int XMLCALL
    156 			xmlTextReaderIsDefault	(xmlTextReaderPtr reader);
    157 XMLPUBFUN int XMLCALL
    158 			xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
    159 XMLPUBFUN int XMLCALL
    160 			xmlTextReaderNodeType	(xmlTextReaderPtr reader);
    161 XMLPUBFUN int XMLCALL
    162 			xmlTextReaderQuoteChar	(xmlTextReaderPtr reader);
    163 XMLPUBFUN int XMLCALL
    164 			xmlTextReaderReadState	(xmlTextReaderPtr reader);
    165 XMLPUBFUN int XMLCALL
    166                         xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
    167 
    168 XMLPUBFUN const xmlChar * XMLCALL
    169 		    xmlTextReaderConstBaseUri	(xmlTextReaderPtr reader);
    170 XMLPUBFUN const xmlChar * XMLCALL
    171 		    xmlTextReaderConstLocalName	(xmlTextReaderPtr reader);
    172 XMLPUBFUN const xmlChar * XMLCALL
    173 		    xmlTextReaderConstName	(xmlTextReaderPtr reader);
    174 XMLPUBFUN const xmlChar * XMLCALL
    175 		    xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
    176 XMLPUBFUN const xmlChar * XMLCALL
    177 		    xmlTextReaderConstPrefix	(xmlTextReaderPtr reader);
    178 XMLPUBFUN const xmlChar * XMLCALL
    179 		    xmlTextReaderConstXmlLang	(xmlTextReaderPtr reader);
    180 XMLPUBFUN const xmlChar * XMLCALL
    181 		    xmlTextReaderConstString	(xmlTextReaderPtr reader,
    182 						 const xmlChar *str);
    183 XMLPUBFUN const xmlChar * XMLCALL
    184 		    xmlTextReaderConstValue	(xmlTextReaderPtr reader);
    185 
    186 /*
    187  * use the Const version of the routine for
    188  * better performance and simpler code
    189  */
    190 XMLPUBFUN xmlChar * XMLCALL
    191 			xmlTextReaderBaseUri	(xmlTextReaderPtr reader);
    192 XMLPUBFUN xmlChar * XMLCALL
    193 			xmlTextReaderLocalName	(xmlTextReaderPtr reader);
    194 XMLPUBFUN xmlChar * XMLCALL
    195 			xmlTextReaderName	(xmlTextReaderPtr reader);
    196 XMLPUBFUN xmlChar * XMLCALL
    197 			xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
    198 XMLPUBFUN xmlChar * XMLCALL
    199 			xmlTextReaderPrefix	(xmlTextReaderPtr reader);
    200 XMLPUBFUN xmlChar * XMLCALL
    201 			xmlTextReaderXmlLang	(xmlTextReaderPtr reader);
    202 XMLPUBFUN xmlChar * XMLCALL
    203 			xmlTextReaderValue	(xmlTextReaderPtr reader);
    204 
    205 /*
    206  * Methods of the XmlTextReader
    207  */
    208 XMLPUBFUN int XMLCALL
    209 		    xmlTextReaderClose		(xmlTextReaderPtr reader);
    210 XMLPUBFUN xmlChar * XMLCALL
    211 		    xmlTextReaderGetAttributeNo	(xmlTextReaderPtr reader,
    212 						 int no);
    213 XMLPUBFUN xmlChar * XMLCALL
    214 		    xmlTextReaderGetAttribute	(xmlTextReaderPtr reader,
    215 						 const xmlChar *name);
    216 XMLPUBFUN xmlChar * XMLCALL
    217 		    xmlTextReaderGetAttributeNs	(xmlTextReaderPtr reader,
    218 						 const xmlChar *localName,
    219 						 const xmlChar *namespaceURI);
    220 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
    221 		    xmlTextReaderGetRemainder	(xmlTextReaderPtr reader);
    222 XMLPUBFUN xmlChar * XMLCALL
    223 		    xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
    224 						 const xmlChar *prefix);
    225 XMLPUBFUN int XMLCALL
    226 		    xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
    227 						 int no);
    228 XMLPUBFUN int XMLCALL
    229 		    xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
    230 						 const xmlChar *name);
    231 XMLPUBFUN int XMLCALL
    232 		    xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
    233 						 const xmlChar *localName,
    234 						 const xmlChar *namespaceURI);
    235 XMLPUBFUN int XMLCALL
    236 		    xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
    237 XMLPUBFUN int XMLCALL
    238 		    xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
    239 XMLPUBFUN int XMLCALL
    240 		    xmlTextReaderMoveToElement	(xmlTextReaderPtr reader);
    241 XMLPUBFUN int XMLCALL
    242 		    xmlTextReaderNormalization	(xmlTextReaderPtr reader);
    243 XMLPUBFUN const xmlChar * XMLCALL
    244 		    xmlTextReaderConstEncoding  (xmlTextReaderPtr reader);
    245 
    246 /*
    247  * Extensions
    248  */
    249 XMLPUBFUN int XMLCALL
    250 		    xmlTextReaderSetParserProp	(xmlTextReaderPtr reader,
    251 						 int prop,
    252 						 int value);
    253 XMLPUBFUN int XMLCALL
    254 		    xmlTextReaderGetParserProp	(xmlTextReaderPtr reader,
    255 						 int prop);
    256 XMLPUBFUN xmlNodePtr XMLCALL
    257 		    xmlTextReaderCurrentNode	(xmlTextReaderPtr reader);
    258 
    259 XMLPUBFUN int XMLCALL
    260             xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
    261 
    262 XMLPUBFUN int XMLCALL
    263             xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
    264 
    265 XMLPUBFUN xmlNodePtr XMLCALL
    266 		    xmlTextReaderPreserve	(xmlTextReaderPtr reader);
    267 #ifdef LIBXML_PATTERN_ENABLED
    268 XMLPUBFUN int XMLCALL
    269 		    xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
    270 						 const xmlChar *pattern,
    271 						 const xmlChar **namespaces);
    272 #endif /* LIBXML_PATTERN_ENABLED */
    273 XMLPUBFUN xmlDocPtr XMLCALL
    274 		    xmlTextReaderCurrentDoc	(xmlTextReaderPtr reader);
    275 XMLPUBFUN xmlNodePtr XMLCALL
    276 		    xmlTextReaderExpand		(xmlTextReaderPtr reader);
    277 XMLPUBFUN int XMLCALL
    278 		    xmlTextReaderNext		(xmlTextReaderPtr reader);
    279 XMLPUBFUN int XMLCALL
    280 		    xmlTextReaderNextSibling	(xmlTextReaderPtr reader);
    281 XMLPUBFUN int XMLCALL
    282 		    xmlTextReaderIsValid	(xmlTextReaderPtr reader);
    283 #ifdef LIBXML_SCHEMAS_ENABLED
    284 XMLPUBFUN int XMLCALL
    285 		    xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
    286 						 const char *rng);
    287 XMLPUBFUN int XMLCALL
    288 		    xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader,
    289 						 xmlRelaxNGValidCtxtPtr ctxt,
    290 						 int options);
    291 
    292 XMLPUBFUN int XMLCALL
    293 		    xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
    294 						 xmlRelaxNGPtr schema);
    295 XMLPUBFUN int XMLCALL
    296 		    xmlTextReaderSchemaValidate	(xmlTextReaderPtr reader,
    297 						 const char *xsd);
    298 XMLPUBFUN int XMLCALL
    299 		    xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
    300 						 xmlSchemaValidCtxtPtr ctxt,
    301 						 int options);
    302 XMLPUBFUN int XMLCALL
    303 		    xmlTextReaderSetSchema	(xmlTextReaderPtr reader,
    304 						 xmlSchemaPtr schema);
    305 #endif
    306 XMLPUBFUN const xmlChar * XMLCALL
    307 		    xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
    308 XMLPUBFUN int XMLCALL
    309 		    xmlTextReaderStandalone     (xmlTextReaderPtr reader);
    310 
    311 
    312 /*
    313  * Index lookup
    314  */
    315 XMLPUBFUN long XMLCALL
    316 		xmlTextReaderByteConsumed	(xmlTextReaderPtr reader);
    317 
    318 /*
    319  * New more complete APIs for simpler creation and reuse of readers
    320  */
    321 XMLPUBFUN xmlTextReaderPtr XMLCALL
    322 		xmlReaderWalker		(xmlDocPtr doc);
    323 XMLPUBFUN xmlTextReaderPtr XMLCALL
    324 		xmlReaderForDoc		(const xmlChar * cur,
    325 					 const char *URL,
    326 					 const char *encoding,
    327 					 int options);
    328 XMLPUBFUN xmlTextReaderPtr XMLCALL
    329 		xmlReaderForFile	(const char *filename,
    330 					 const char *encoding,
    331 					 int options);
    332 XMLPUBFUN xmlTextReaderPtr XMLCALL
    333 		xmlReaderForMemory	(const char *buffer,
    334 					 int size,
    335 					 const char *URL,
    336 					 const char *encoding,
    337 					 int options);
    338 XMLPUBFUN xmlTextReaderPtr XMLCALL
    339 		xmlReaderForFd		(int fd,
    340 					 const char *URL,
    341 					 const char *encoding,
    342 					 int options);
    343 XMLPUBFUN xmlTextReaderPtr XMLCALL
    344 		xmlReaderForIO		(xmlInputReadCallback ioread,
    345 					 xmlInputCloseCallback ioclose,
    346 					 void *ioctx,
    347 					 const char *URL,
    348 					 const char *encoding,
    349 					 int options);
    350 
    351 XMLPUBFUN int XMLCALL
    352 		xmlReaderNewWalker	(xmlTextReaderPtr reader,
    353 					 xmlDocPtr doc);
    354 XMLPUBFUN int XMLCALL
    355 		xmlReaderNewDoc		(xmlTextReaderPtr reader,
    356 					 const xmlChar * cur,
    357 					 const char *URL,
    358 					 const char *encoding,
    359 					 int options);
    360 XMLPUBFUN int XMLCALL
    361 		xmlReaderNewFile	(xmlTextReaderPtr reader,
    362 					 const char *filename,
    363 					 const char *encoding,
    364 					 int options);
    365 XMLPUBFUN int XMLCALL
    366 		xmlReaderNewMemory	(xmlTextReaderPtr reader,
    367 					 const char *buffer,
    368 					 int size,
    369 					 const char *URL,
    370 					 const char *encoding,
    371 					 int options);
    372 XMLPUBFUN int XMLCALL
    373 		xmlReaderNewFd		(xmlTextReaderPtr reader,
    374 					 int fd,
    375 					 const char *URL,
    376 					 const char *encoding,
    377 					 int options);
    378 XMLPUBFUN int XMLCALL
    379 		xmlReaderNewIO		(xmlTextReaderPtr reader,
    380 					 xmlInputReadCallback ioread,
    381 					 xmlInputCloseCallback ioclose,
    382 					 void *ioctx,
    383 					 const char *URL,
    384 					 const char *encoding,
    385 					 int options);
    386 /*
    387  * Error handling extensions
    388  */
    389 typedef void *  xmlTextReaderLocatorPtr;
    390 
    391 /**
    392  * xmlTextReaderErrorFunc:
    393  * @arg: the user argument
    394  * @msg: the message
    395  * @severity: the severity of the error
    396  * @locator: a locator indicating where the error occured
    397  *
    398  * Signature of an error callback from a reader parser
    399  */
    400 typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
    401 					       const char *msg,
    402 					       xmlParserSeverities severity,
    403 					       xmlTextReaderLocatorPtr locator);
    404 XMLPUBFUN int XMLCALL
    405 	    xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
    406 XMLPUBFUN xmlChar * XMLCALL
    407 	    xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
    408 XMLPUBFUN void XMLCALL
    409 	    xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
    410 					 xmlTextReaderErrorFunc f,
    411 					 void *arg);
    412 XMLPUBFUN void XMLCALL
    413 	    xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
    414 						   xmlStructuredErrorFunc f,
    415 						   void *arg);
    416 XMLPUBFUN void XMLCALL
    417 	    xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
    418 					 xmlTextReaderErrorFunc *f,
    419 					 void **arg);
    420 
    421 #endif /* LIBXML_READER_ENABLED */
    422 
    423 #ifdef __cplusplus
    424 }
    425 #endif
    426 
    427 #endif /* __XML_XMLREADER_H__ */
    428 
    429