xmlreader.h revision 33300b49f0801f5efe6363bd6b85b3bb5ace70fd
1/*
2 * xmlreader.h : Interfaces, constants and types of the XML streaming API.
3 *
4 * See Copyright for the status of this software.
5 *
6 * daniel@veillard.com
7 */
8
9#ifndef __XML_XMLREADER_H__
10#define __XML_XMLREADER_H__
11
12#include <libxml/tree.h>
13#include <libxml/xmlIO.h>
14#ifdef LIBXML_SCHEMAS_ENABLED
15#include <libxml/relaxng.h>
16#endif
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22typedef enum {
23    XML_PARSER_LOADDTD = 1,
24    XML_PARSER_DEFAULTATTRS = 2,
25    XML_PARSER_VALIDATE = 3,
26    XML_PARSER_SUBST_ENTITIES = 4
27} xmlParserProperties;
28
29typedef enum {
30    XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
31    XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
32    XML_PARSER_SEVERITY_WARNING = 3,
33    XML_PARSER_SEVERITY_ERROR = 4
34} xmlParserSeverities;
35
36typedef struct _xmlTextReader xmlTextReader;
37typedef xmlTextReader *xmlTextReaderPtr;
38
39/*
40 * Constructors & Destructor
41 */
42xmlTextReaderPtr	xmlNewTextReader	(xmlParserInputBufferPtr input,
43	                                         const char *URI);
44xmlTextReaderPtr	xmlNewTextReaderFilename(const char *URI);
45void			xmlFreeTextReader	(xmlTextReaderPtr reader);
46
47/*
48 * Iterators
49 */
50int		xmlTextReaderRead	(xmlTextReaderPtr reader);
51xmlChar *	xmlTextReaderReadInnerXml	(xmlTextReaderPtr reader);
52xmlChar *	xmlTextReaderReadOuterXml	(xmlTextReaderPtr reader);
53xmlChar *	xmlTextReaderReadString		(xmlTextReaderPtr reader);
54int		xmlTextReaderReadAttributeValue	(xmlTextReaderPtr reader);
55
56/*
57 * Attributes of the node
58 */
59int		xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
60xmlChar *	xmlTextReaderBaseUri	(xmlTextReaderPtr reader);
61int		xmlTextReaderDepth	(xmlTextReaderPtr reader);
62int		xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
63int		xmlTextReaderHasValue(xmlTextReaderPtr reader);
64int		xmlTextReaderIsDefault	(xmlTextReaderPtr reader);
65int		xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
66xmlChar *	xmlTextReaderLocalName	(xmlTextReaderPtr reader);
67xmlChar *	xmlTextReaderName	(xmlTextReaderPtr reader);
68xmlChar *	xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
69int		xmlTextReaderNodeType	(xmlTextReaderPtr reader);
70xmlChar *	xmlTextReaderPrefix	(xmlTextReaderPtr reader);
71int		xmlTextReaderQuoteChar	(xmlTextReaderPtr reader);
72xmlChar *	xmlTextReaderValue	(xmlTextReaderPtr reader);
73xmlChar *	xmlTextReaderXmlLang	(xmlTextReaderPtr reader);
74int		xmlTextReaderReadState	(xmlTextReaderPtr reader);
75
76/*
77 * Methods of the XmlTextReader
78 */
79int		xmlTextReaderClose		(xmlTextReaderPtr reader);
80xmlChar *	xmlTextReaderGetAttributeNo	(xmlTextReaderPtr reader,
81						 int no);
82xmlChar *	xmlTextReaderGetAttribute	(xmlTextReaderPtr reader,
83						 const xmlChar *name);
84xmlChar *	xmlTextReaderGetAttributeNs	(xmlTextReaderPtr reader,
85						 const xmlChar *localName,
86						 const xmlChar *namespaceURI);
87xmlParserInputBufferPtr xmlTextReaderGetRemainder(xmlTextReaderPtr reader);
88xmlChar *	xmlTextReaderLookupNamespace	(xmlTextReaderPtr reader,
89						 const xmlChar *prefix);
90int		xmlTextReaderMoveToAttributeNo	(xmlTextReaderPtr reader,
91						 int no);
92int		xmlTextReaderMoveToAttribute	(xmlTextReaderPtr reader,
93						 const xmlChar *name);
94int		xmlTextReaderMoveToAttributeNs	(xmlTextReaderPtr reader,
95						 const xmlChar *localName,
96						 const xmlChar *namespaceURI);
97int		xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
98int		xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
99int		xmlTextReaderMoveToElement	(xmlTextReaderPtr reader);
100int		xmlTextReaderNormalization	(xmlTextReaderPtr reader);
101
102/*
103 * Extensions
104 */
105int		xmlTextReaderSetParserProp	(xmlTextReaderPtr reader,
106						 int prop,
107						 int value);
108int		xmlTextReaderGetParserProp	(xmlTextReaderPtr reader,
109						 int prop);
110xmlNodePtr	xmlTextReaderCurrentNode	(xmlTextReaderPtr reader);
111xmlDocPtr	xmlTextReaderCurrentDoc		(xmlTextReaderPtr reader);
112xmlNodePtr	xmlTextReaderExpand		(xmlTextReaderPtr reader);
113int		xmlTextReaderNext		(xmlTextReaderPtr reader);
114int		xmlTextReaderIsValid		(xmlTextReaderPtr reader);
115#ifdef LIBXML_SCHEMAS_ENABLED
116int		xmlTextReaderRelaxNGValidate	(xmlTextReaderPtr reader,
117						 const char *rng);
118int		xmlTextReaderRelaxNGSetSchema	(xmlTextReaderPtr reader,
119						 xmlRelaxNGPtr schema);
120#endif
121
122/*
123 * Error handling extensions
124 */
125typedef void *  xmlTextReaderLocatorPtr;
126typedef void   (*xmlTextReaderErrorFunc)        (void *arg,
127						 const char *msg,
128						 xmlParserSeverities severity,
129						 xmlTextReaderLocatorPtr locator);
130int             xmlTextReaderLocatorLineNumber  (xmlTextReaderLocatorPtr locator);
131/*int             xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
132xmlChar *       xmlTextReaderLocatorBaseURI     (xmlTextReaderLocatorPtr locator);
133void            xmlTextReaderSetErrorHandler    (xmlTextReaderPtr reader,
134						 xmlTextReaderErrorFunc f,
135						 void *arg);
136void            xmlTextReaderGetErrorHandler    (xmlTextReaderPtr reader,
137						 xmlTextReaderErrorFunc *f,
138						 void **arg);
139
140#ifdef __cplusplus
141}
142#endif
143#endif /* __XML_XMLREADER_H__ */
144
145