mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-21 14:53:44 +03:00
Unfortunately, Doxygen's TYPDEF_HIDES_STRUCT option is too broken. Document struct typedefs to make autolinks work.
451 lines
12 KiB
C
451 lines
12 KiB
C
/**
|
|
* @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__ */
|
|
|