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 occurred 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