1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-10-21 14:53:44 +03:00
Files
libxml2/include/libxml/xmlreader.h
Nick Wellnhofer c7a9ef1d66 doc: Document struct typedefs
Unfortunately, Doxygen's TYPDEF_HIDES_STRUCT option is too broken.
Document struct typedefs to make autolinks work.
2025-07-04 16:47:42 +02:00

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__ */