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 		    xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
    289 						 xmlRelaxNGPtr schema);
    290 XMLPUBFUN int XMLCALL
    291 		    xmlTextReaderSchemaValidate	(xmlTextReaderPtr reader,
    292 						 const char *xsd);
    293 XMLPUBFUN int XMLCALL
    294 		    xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
    295 						 xmlSchemaValidCtxtPtr ctxt,
    296 						 int options);
    297 XMLPUBFUN int XMLCALL
    298 		    xmlTextReaderSetSchema	(xmlTextReaderPtr reader,
    299 						 xmlSchemaPtr schema);
    300 #endif
    301 XMLPUBFUN const xmlChar * XMLCALL
    302 		    xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
    303 XMLPUBFUN int XMLCALL
    304 		    xmlTextReaderStandalone     (xmlTextReaderPtr reader);
    305 
    306 
    307 /*
    308  * Index lookup
    309  */
    310 XMLPUBFUN long XMLCALL
    311 		xmlTextReaderByteConsumed	(xmlTextReaderPtr reader);
    312 
    313 /*
    314  * New more complete APIs for simpler creation and reuse of readers
    315  */
    316 XMLPUBFUN xmlTextReaderPtr XMLCALL
    317 		xmlReaderWalker		(xmlDocPtr doc);
    318 XMLPUBFUN xmlTextReaderPtr XMLCALL
    319 		xmlReaderForDoc		(const xmlChar * cur,
    320 					 const char *URL,
    321 					 const char *encoding,
    322 					 int options);
    323 XMLPUBFUN xmlTextReaderPtr XMLCALL
    324 		xmlReaderForFile	(const char *filename,
    325 					 const char *encoding,
    326 					 int options);
    327 XMLPUBFUN xmlTextReaderPtr XMLCALL
    328 		xmlReaderForMemory	(const char *buffer,
    329 					 int size,
    330 					 const char *URL,
    331 					 const char *encoding,
    332 					 int options);
    333 XMLPUBFUN xmlTextReaderPtr XMLCALL
    334 		xmlReaderForFd		(int fd,
    335 					 const char *URL,
    336 					 const char *encoding,
    337 					 int options);
    338 XMLPUBFUN xmlTextReaderPtr XMLCALL
    339 		xmlReaderForIO		(xmlInputReadCallback ioread,
    340 					 xmlInputCloseCallback ioclose,
    341 					 void *ioctx,
    342 					 const char *URL,
    343 					 const char *encoding,
    344 					 int options);
    345 
    346 XMLPUBFUN int XMLCALL
    347 		xmlReaderNewWalker	(xmlTextReaderPtr reader,
    348 					 xmlDocPtr doc);
    349 XMLPUBFUN int XMLCALL
    350 		xmlReaderNewDoc		(xmlTextReaderPtr reader,
    351 					 const xmlChar * cur,
    352 					 const char *URL,
    353 					 const char *encoding,
    354 					 int options);
    355 XMLPUBFUN int XMLCALL
    356 		xmlReaderNewFile	(xmlTextReaderPtr reader,
    357 					 const char *filename,
    358 					 const char *encoding,
    359 					 int options);
    360 XMLPUBFUN int XMLCALL
    361 		xmlReaderNewMemory	(xmlTextReaderPtr reader,
    362 					 const char *buffer,
    363 					 int size,
    364 					 const char *URL,
    365 					 const char *encoding,
    366 					 int options);
    367 XMLPUBFUN int XMLCALL
    368 		xmlReaderNewFd		(xmlTextReaderPtr reader,
    369 					 int fd,
    370 					 const char *URL,
    371 					 const char *encoding,
    372 					 int options);
    373 XMLPUBFUN int XMLCALL
    374 		xmlReaderNewIO		(xmlTextReaderPtr reader,
    375 					 xmlInputReadCallback ioread,
    376 					 xmlInputCloseCallback ioclose,
    377 					 void *ioctx,
    378 					 const char *URL,
    379 					 const char *encoding,
    380 					 int options);
    381 /*
    382  * Error handling extensions
    383  */
    384 typedef void *  xmlTextReaderLocatorPtr;
    385 
    386 /**
    387  * xmlTextReaderErrorFunc:
    388  * @arg: the user argument
    389  * @msg: the message
    390  * @severity: the severity of the error
    391  * @locator: a locator indicating where the error occured
    392  *
    393  * Signature of an error callback from a reader parser
    394  */
    395 typedef void   (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
    396 						 const char *msg,
    397 						 xmlParserSeverities severity,
    398 						 xmlTextReaderLocatorPtr locator);
    399 XMLPUBFUN int XMLCALL
    400 		    xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
    401 /*int             xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
    402 XMLPUBFUN xmlChar * XMLCALL
    403 		    xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
    404 XMLPUBFUN void XMLCALL
    405 		    xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
    406 						 xmlTextReaderErrorFunc f,
    407 						 void *arg);
    408 XMLPUBFUN void XMLCALL
    409 		    xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
    410 							   xmlStructuredErrorFunc f,
    411 							   void *arg);
    412 XMLPUBFUN void XMLCALL
    413 		    xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
    414 						 xmlTextReaderErrorFunc *f,
    415 						 void **arg);
    416 
    417 #endif /* LIBXML_READER_ENABLED */
    418 
    419 #ifdef __cplusplus
    420 }
    421 #endif
    422 
    423 #endif /* __XML_XMLREADER_H__ */
    424 
    425