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