| /** |
| * @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 <libxml/xmlversion.h> |
| #include <libxml/tree.h> |
| #include <libxml/xmlerror.h> |
| #include <libxml/xmlIO.h> |
| #ifdef LIBXML_RELAXNG_ENABLED |
| #include <libxml/relaxng.h> |
| #endif |
| #ifdef LIBXML_SCHEMAS_ENABLED |
| #include <libxml/xmlschemas.h> |
| #endif |
| #include <libxml/parser.h> |
| |
| #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__ */ |
| |