ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ/** * @file * * @brief the XMLReader implementation * * API of the XML streaming API based on C\# interfaces. * * @copyright See Copyright for the status of this software. * * @author Daniel Veillard */ #ifndef __XML_XMLREADER_H__ #define __XML_XMLREADER_H__ #include #include #include #include #ifdef LIBXML_RELAXNG_ENABLED #include #endif #ifdef LIBXML_SCHEMAS_ENABLED #include #endif #include #ifdef __cplusplus extern "C" { #endif /** * How severe an error callback is when the per-reader error callback API * is used. */ typedef enum { XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, XML_PARSER_SEVERITY_WARNING = 3, XML_PARSER_SEVERITY_ERROR = 4 } xmlParserSeverities; #ifdef LIBXML_READER_ENABLED /** * Internal state values for the reader. */ typedef enum { XML_TEXTREADER_MODE_INITIAL = 0, XML_TEXTREADER_MODE_INTERACTIVE = 1, XML_TEXTREADER_MODE_ERROR = 2, XML_TEXTREADER_MODE_EOF =3, XML_TEXTREADER_MODE_CLOSED = 4, XML_TEXTREADER_MODE_READING = 5 } xmlTextReaderMode; /** * Some common options to use with #xmlTextReaderSetParserProp, but it * is better to use xmlParserOption and the xmlReaderNewxxx and * xmlReaderForxxx APIs now. */ typedef enum { /* load external DTD */ XML_PARSER_LOADDTD = 1, /* use default attributes */ XML_PARSER_DEFAULTATTRS = 2, /* DTD validation */ XML_PARSER_VALIDATE = 3, /* substitute entities */ XML_PARSER_SUBST_ENTITIES = 4 } xmlParserProperties; /** * Predefined constants for the different types of nodes. */ typedef enum { /** unknown or error */ XML_READER_TYPE_NONE = 0, /** element */ XML_READER_TYPE_ELEMENT = 1, /** attribute */ XML_READER_TYPE_ATTRIBUTE = 2, /** text */ XML_READER_TYPE_TEXT = 3, /** CDATA section */ XML_READER_TYPE_CDATA = 4, /** entity reference */ XML_READER_TYPE_ENTITY_REFERENCE = 5, /** unused */ XML_READER_TYPE_ENTITY = 6, /** processing instruction */ XML_READER_TYPE_PROCESSING_INSTRUCTION = 7, /** comment */ XML_READER_TYPE_COMMENT = 8, /** document */ XML_READER_TYPE_DOCUMENT = 9, /** unused */ XML_READER_TYPE_DOCUMENT_TYPE = 10, /** document fragment */ XML_READER_TYPE_DOCUMENT_FRAGMENT = 11, /** notation, unused */ XML_READER_TYPE_NOTATION = 12, /** whitespace */ XML_READER_TYPE_WHITESPACE = 13, /** significant whitespace */ XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14, /** end of element */ XML_READER_TYPE_END_ELEMENT = 15, /** unused */ XML_READER_TYPE_END_ENTITY = 16, /** unused */ XML_READER_TYPE_XML_DECLARATION = 17 } xmlReaderTypes; /** xmlReader context */ typedef struct _xmlTextReader xmlTextReader; typedef xmlTextReader *xmlTextReaderPtr; /* * Constructors & Destructor */ XMLPUBFUN xmlTextReader * xmlNewTextReader (xmlParserInputBuffer *input, const char *URI); XMLPUBFUN xmlTextReader * xmlNewTextReaderFilename(const char *URI); XMLPUBFUN void xmlFreeTextReader (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderSetup(xmlTextReader *reader, xmlParserInputBuffer *input, const char *URL, const char *encoding, int options); XMLPUBFUN void xmlTextReaderSetMaxAmplification(xmlTextReader *reader, unsigned maxAmpl); XMLPUBFUN const xmlError * xmlTextReaderGetLastError(xmlTextReader *reader); /* * Iterators */ XMLPUBFUN int xmlTextReaderRead (xmlTextReader *reader); #ifdef LIBXML_WRITER_ENABLED XMLPUBFUN xmlChar * xmlTextReaderReadInnerXml(xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderReadOuterXml(xmlTextReader *reader); #endif XMLPUBFUN xmlChar * xmlTextReaderReadString (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderReadAttributeValue(xmlTextReader *reader); /* * Attributes of the node */ XMLPUBFUN int xmlTextReaderAttributeCount(xmlTextReader *reader); XMLPUBFUN int xmlTextReaderDepth (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderHasAttributes(xmlTextReader *reader); XMLPUBFUN int xmlTextReaderHasValue(xmlTextReader *reader); XMLPUBFUN int xmlTextReaderIsDefault (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderIsEmptyElement(xmlTextReader *reader); XMLPUBFUN int xmlTextReaderNodeType (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderQuoteChar (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderReadState (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderIsNamespaceDecl(xmlTextReader *reader); XMLPUBFUN const xmlChar * xmlTextReaderConstBaseUri (xmlTextReader *reader); XMLPUBFUN const xmlChar * xmlTextReaderConstLocalName (xmlTextReader *reader); XMLPUBFUN const xmlChar * xmlTextReaderConstName (xmlTextReader *reader); XMLPUBFUN const xmlChar * xmlTextReaderConstNamespaceUri(xmlTextReader *reader); XMLPUBFUN const xmlChar * xmlTextReaderConstPrefix (xmlTextReader *reader); XMLPUBFUN const xmlChar * xmlTextReaderConstXmlLang (xmlTextReader *reader); XMLPUBFUN const xmlChar * xmlTextReaderConstString (xmlTextReader *reader, const xmlChar *str); XMLPUBFUN const xmlChar * xmlTextReaderConstValue (xmlTextReader *reader); /* * use the Const version of the routine for * better performance and simpler code */ XMLPUBFUN xmlChar * xmlTextReaderBaseUri (xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderLocalName (xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderName (xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderNamespaceUri(xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderPrefix (xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderXmlLang (xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderValue (xmlTextReader *reader); /* * Methods of the XmlTextReader */ XMLPUBFUN int xmlTextReaderClose (xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderGetAttributeNo (xmlTextReader *reader, int no); XMLPUBFUN xmlChar * xmlTextReaderGetAttribute (xmlTextReader *reader, const xmlChar *name); XMLPUBFUN xmlChar * xmlTextReaderGetAttributeNs (xmlTextReader *reader, const xmlChar *localName, const xmlChar *namespaceURI); XMLPUBFUN xmlParserInputBuffer * xmlTextReaderGetRemainder (xmlTextReader *reader); XMLPUBFUN xmlChar * xmlTextReaderLookupNamespace(xmlTextReader *reader, const xmlChar *prefix); XMLPUBFUN int xmlTextReaderMoveToAttributeNo(xmlTextReader *reader, int no); XMLPUBFUN int xmlTextReaderMoveToAttribute(xmlTextReader *reader, const xmlChar *name); XMLPUBFUN int xmlTextReaderMoveToAttributeNs(xmlTextReader *reader, const xmlChar *localName, const xmlChar *namespaceURI); XMLPUBFUN int xmlTextReaderMoveToFirstAttribute(xmlTextReader *reader); XMLPUBFUN int xmlTextReaderMoveToNextAttribute(xmlTextReader *reader); XMLPUBFUN int xmlTextReaderMoveToElement (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderNormalization (xmlTextReader *reader); XMLPUBFUN const xmlChar * xmlTextReaderConstEncoding (xmlTextReader *reader); /* * Extensions */ XMLPUBFUN int xmlTextReaderSetParserProp (xmlTextReader *reader, int prop, int value); XMLPUBFUN int xmlTextReaderGetParserProp (xmlTextReader *reader, int prop); XMLPUBFUN xmlNode * xmlTextReaderCurrentNode (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderGetParserLineNumber(xmlTextReader *reader); XMLPUBFUN int xmlTextReaderGetParserColumnNumber(xmlTextReader *reader); XMLPUBFUN xmlNode * xmlTextReaderPreserve (xmlTextReader *reader); #ifdef LIBXML_PATTERN_ENABLED XMLPUBFUN int xmlTextReaderPreservePattern(xmlTextReader *reader, const xmlChar *pattern, const xmlChar **namespaces); #endif /* LIBXML_PATTERN_ENABLED */ XMLPUBFUN xmlDoc * xmlTextReaderCurrentDoc (xmlTextReader *reader); XMLPUBFUN xmlNode * xmlTextReaderExpand (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderNext (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderNextSibling (xmlTextReader *reader); XMLPUBFUN int xmlTextReaderIsValid (xmlTextReader *reader); #ifdef LIBXML_RELAXNG_ENABLED XMLPUBFUN int xmlTextReaderRelaxNGValidate(xmlTextReader *reader, const char *rng); XMLPUBFUN int xmlTextReaderRelaxNGValidateCtxt(xmlTextReader *reader, xmlRelaxNGValidCtxt *ctxt, int options); XMLPUBFUN int xmlTextReaderRelaxNGSetSchema(xmlTextReader *reader, xmlRelaxNG *schema); #endif #ifdef LIBXML_SCHEMAS_ENABLED XMLPUBFUN int xmlTextReaderSchemaValidate (xmlTextReader *reader, const char *xsd); XMLPUBFUN int xmlTextReaderSchemaValidateCtxt(xmlTextReader *reader, xmlSchemaValidCtxt *ctxt, int options); XMLPUBFUN int xmlTextReaderSetSchema (xmlTextReader *reader, xmlSchema *schema); #endif XMLPUBFUN const xmlChar * xmlTextReaderConstXmlVersion(xmlTextReader *reader); XMLPUBFUN int xmlTextReaderStandalone (xmlTextReader *reader); /* * Index lookup */ XMLPUBFUN long xmlTextReaderByteConsumed (xmlTextReader *reader); /* * New more complete APIs for simpler creation and reuse of readers */ XMLPUBFUN xmlTextReader * xmlReaderWalker (xmlDoc *doc); XMLPUBFUN xmlTextReader * xmlReaderForDoc (const xmlChar * cur, const char *URL, const char *encoding, int options); XMLPUBFUN xmlTextReader * xmlReaderForFile (const char *filename, const char *encoding, int options); XMLPUBFUN xmlTextReader * xmlReaderForMemory (const char *buffer, int size, const char *URL, const char *encoding, int options); XMLPUBFUN xmlTextReader * xmlReaderForFd (int fd, const char *URL, const char *encoding, int options); XMLPUBFUN xmlTextReader * xmlReaderForIO (xmlInputReadCallback ioread, xmlInputCloseCallback ioclose, void *ioctx, const char *URL, const char *encoding, int options); XMLPUBFUN int xmlReaderNewWalker (xmlTextReader *reader, xmlDoc *doc); XMLPUBFUN int xmlReaderNewDoc (xmlTextReader *reader, const xmlChar * cur, const char *URL, const char *encoding, int options); XMLPUBFUN int xmlReaderNewFile (xmlTextReader *reader, const char *filename, const char *encoding, int options); XMLPUBFUN int xmlReaderNewMemory (xmlTextReader *reader, const char *buffer, int size, const char *URL, const char *encoding, int options); XMLPUBFUN int xmlReaderNewFd (xmlTextReader *reader, int fd, const char *URL, const char *encoding, int options); XMLPUBFUN int xmlReaderNewIO (xmlTextReader *reader, xmlInputReadCallback ioread, xmlInputCloseCallback ioclose, void *ioctx, const char *URL, const char *encoding, int options); /* * Error handling extensions */ typedef void * xmlTextReaderLocatorPtr; /** * Signature of an error callback from a reader parser * * @param arg the user argument * @param msg the message * @param severity the severity of the error * @param locator a locator indicating where the error occurred */ typedef void (*xmlTextReaderErrorFunc)(void *arg, const char *msg, xmlParserSeverities severity, xmlTextReaderLocatorPtr locator); XMLPUBFUN int xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); XMLPUBFUN xmlChar * xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); XMLPUBFUN void xmlTextReaderSetErrorHandler(xmlTextReader *reader, xmlTextReaderErrorFunc f, void *arg); XMLPUBFUN void xmlTextReaderSetStructuredErrorHandler(xmlTextReader *reader, xmlStructuredErrorFunc f, void *arg); XMLPUBFUN void xmlTextReaderGetErrorHandler(xmlTextReader *reader, xmlTextReaderErrorFunc *f, void **arg); XMLPUBFUN void xmlTextReaderSetResourceLoader(xmlTextReader *reader, xmlResourceLoader loader, void *data); #endif /* LIBXML_READER_ENABLED */ #ifdef __cplusplus } #endif #endif /* __XML_XMLREADER_H__ */