2 * Summary: the XMLReader implementation
3 * Description: API of the XML streaming API based on C# interfaces.
5 * Copy: See Copyright for the status of this software.
7 * Author: Daniel Veillard
10 #ifndef __XML_XMLREADER_H__
11 #define __XML_XMLREADER_H__
13 #include <libxml/xmlversion.h>
14 #include <libxml/tree.h>
15 #include <libxml/xmlIO.h>
16 #ifdef LIBXML_SCHEMAS_ENABLED
17 #include <libxml/relaxng.h>
18 #include <libxml/xmlschemas.h>
26 * xmlParserSeverities:
28 * How severe an error callback is when the per-reader error callback API
32 XML_PARSER_SEVERITY_VALIDITY_WARNING
= 1,
33 XML_PARSER_SEVERITY_VALIDITY_ERROR
= 2,
34 XML_PARSER_SEVERITY_WARNING
= 3,
35 XML_PARSER_SEVERITY_ERROR
= 4
36 } xmlParserSeverities
;
38 #ifdef LIBXML_READER_ENABLED
43 * Internal state values for the reader.
46 XML_TEXTREADER_MODE_INITIAL
= 0,
47 XML_TEXTREADER_MODE_INTERACTIVE
= 1,
48 XML_TEXTREADER_MODE_ERROR
= 2,
49 XML_TEXTREADER_MODE_EOF
=3,
50 XML_TEXTREADER_MODE_CLOSED
= 4,
51 XML_TEXTREADER_MODE_READING
= 5
55 * xmlParserProperties:
57 * Some common options to use with xmlTextReaderSetParserProp, but it
58 * is better to use xmlParserOption and the xmlReaderNewxxx and
59 * xmlReaderForxxx APIs now.
62 XML_PARSER_LOADDTD
= 1,
63 XML_PARSER_DEFAULTATTRS
= 2,
64 XML_PARSER_VALIDATE
= 3,
65 XML_PARSER_SUBST_ENTITIES
= 4
66 } xmlParserProperties
;
71 * Predefined constants for the different types of nodes.
74 XML_READER_TYPE_NONE
= 0,
75 XML_READER_TYPE_ELEMENT
= 1,
76 XML_READER_TYPE_ATTRIBUTE
= 2,
77 XML_READER_TYPE_TEXT
= 3,
78 XML_READER_TYPE_CDATA
= 4,
79 XML_READER_TYPE_ENTITY_REFERENCE
= 5,
80 XML_READER_TYPE_ENTITY
= 6,
81 XML_READER_TYPE_PROCESSING_INSTRUCTION
= 7,
82 XML_READER_TYPE_COMMENT
= 8,
83 XML_READER_TYPE_DOCUMENT
= 9,
84 XML_READER_TYPE_DOCUMENT_TYPE
= 10,
85 XML_READER_TYPE_DOCUMENT_FRAGMENT
= 11,
86 XML_READER_TYPE_NOTATION
= 12,
87 XML_READER_TYPE_WHITESPACE
= 13,
88 XML_READER_TYPE_SIGNIFICANT_WHITESPACE
= 14,
89 XML_READER_TYPE_END_ELEMENT
= 15,
90 XML_READER_TYPE_END_ENTITY
= 16,
91 XML_READER_TYPE_XML_DECLARATION
= 17
97 * Structure for an xmlReader context.
99 typedef struct _xmlTextReader xmlTextReader
;
104 * Pointer to an xmlReader context.
106 typedef xmlTextReader
*xmlTextReaderPtr
;
109 * Constructors & Destructor
111 XMLPUBFUN xmlTextReaderPtr XMLCALL
112 xmlNewTextReader (xmlParserInputBufferPtr input
,
114 XMLPUBFUN xmlTextReaderPtr XMLCALL
115 xmlNewTextReaderFilename(const char *URI
);
117 XMLPUBFUN
void XMLCALL
118 xmlFreeTextReader (xmlTextReaderPtr reader
);
120 XMLPUBFUN
int XMLCALL
121 xmlTextReaderSetup(xmlTextReaderPtr reader
,
122 xmlParserInputBufferPtr input
, const char *URL
,
123 const char *encoding
, int options
);
128 XMLPUBFUN
int XMLCALL
129 xmlTextReaderRead (xmlTextReaderPtr reader
);
131 #ifdef LIBXML_WRITER_ENABLED
132 XMLPUBFUN xmlChar
* XMLCALL
133 xmlTextReaderReadInnerXml(xmlTextReaderPtr reader
);
135 XMLPUBFUN xmlChar
* XMLCALL
136 xmlTextReaderReadOuterXml(xmlTextReaderPtr reader
);
139 XMLPUBFUN xmlChar
* XMLCALL
140 xmlTextReaderReadString (xmlTextReaderPtr reader
);
141 XMLPUBFUN
int XMLCALL
142 xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader
);
145 * Attributes of the node
147 XMLPUBFUN
int XMLCALL
148 xmlTextReaderAttributeCount(xmlTextReaderPtr reader
);
149 XMLPUBFUN
int XMLCALL
150 xmlTextReaderDepth (xmlTextReaderPtr reader
);
151 XMLPUBFUN
int XMLCALL
152 xmlTextReaderHasAttributes(xmlTextReaderPtr reader
);
153 XMLPUBFUN
int XMLCALL
154 xmlTextReaderHasValue(xmlTextReaderPtr reader
);
155 XMLPUBFUN
int XMLCALL
156 xmlTextReaderIsDefault (xmlTextReaderPtr reader
);
157 XMLPUBFUN
int XMLCALL
158 xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader
);
159 XMLPUBFUN
int XMLCALL
160 xmlTextReaderNodeType (xmlTextReaderPtr reader
);
161 XMLPUBFUN
int XMLCALL
162 xmlTextReaderQuoteChar (xmlTextReaderPtr reader
);
163 XMLPUBFUN
int XMLCALL
164 xmlTextReaderReadState (xmlTextReaderPtr reader
);
165 XMLPUBFUN
int XMLCALL
166 xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader
);
168 XMLPUBFUN
const xmlChar
* XMLCALL
169 xmlTextReaderConstBaseUri (xmlTextReaderPtr reader
);
170 XMLPUBFUN
const xmlChar
* XMLCALL
171 xmlTextReaderConstLocalName (xmlTextReaderPtr reader
);
172 XMLPUBFUN
const xmlChar
* XMLCALL
173 xmlTextReaderConstName (xmlTextReaderPtr reader
);
174 XMLPUBFUN
const xmlChar
* XMLCALL
175 xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader
);
176 XMLPUBFUN
const xmlChar
* XMLCALL
177 xmlTextReaderConstPrefix (xmlTextReaderPtr reader
);
178 XMLPUBFUN
const xmlChar
* XMLCALL
179 xmlTextReaderConstXmlLang (xmlTextReaderPtr reader
);
180 XMLPUBFUN
const xmlChar
* XMLCALL
181 xmlTextReaderConstString (xmlTextReaderPtr reader
,
183 XMLPUBFUN
const xmlChar
* XMLCALL
184 xmlTextReaderConstValue (xmlTextReaderPtr reader
);
187 * use the Const version of the routine for
188 * better performance and simpler code
190 XMLPUBFUN xmlChar
* XMLCALL
191 xmlTextReaderBaseUri (xmlTextReaderPtr reader
);
192 XMLPUBFUN xmlChar
* XMLCALL
193 xmlTextReaderLocalName (xmlTextReaderPtr reader
);
194 XMLPUBFUN xmlChar
* XMLCALL
195 xmlTextReaderName (xmlTextReaderPtr reader
);
196 XMLPUBFUN xmlChar
* XMLCALL
197 xmlTextReaderNamespaceUri(xmlTextReaderPtr reader
);
198 XMLPUBFUN xmlChar
* XMLCALL
199 xmlTextReaderPrefix (xmlTextReaderPtr reader
);
200 XMLPUBFUN xmlChar
* XMLCALL
201 xmlTextReaderXmlLang (xmlTextReaderPtr reader
);
202 XMLPUBFUN xmlChar
* XMLCALL
203 xmlTextReaderValue (xmlTextReaderPtr reader
);
206 * Methods of the XmlTextReader
208 XMLPUBFUN
int XMLCALL
209 xmlTextReaderClose (xmlTextReaderPtr reader
);
210 XMLPUBFUN xmlChar
* XMLCALL
211 xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader
,
213 XMLPUBFUN xmlChar
* XMLCALL
214 xmlTextReaderGetAttribute (xmlTextReaderPtr reader
,
215 const xmlChar
*name
);
216 XMLPUBFUN xmlChar
* XMLCALL
217 xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader
,
218 const xmlChar
*localName
,
219 const xmlChar
*namespaceURI
);
220 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
221 xmlTextReaderGetRemainder (xmlTextReaderPtr reader
);
222 XMLPUBFUN xmlChar
* XMLCALL
223 xmlTextReaderLookupNamespace(xmlTextReaderPtr reader
,
224 const xmlChar
*prefix
);
225 XMLPUBFUN
int XMLCALL
226 xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader
,
228 XMLPUBFUN
int XMLCALL
229 xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader
,
230 const xmlChar
*name
);
231 XMLPUBFUN
int XMLCALL
232 xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader
,
233 const xmlChar
*localName
,
234 const xmlChar
*namespaceURI
);
235 XMLPUBFUN
int XMLCALL
236 xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader
);
237 XMLPUBFUN
int XMLCALL
238 xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader
);
239 XMLPUBFUN
int XMLCALL
240 xmlTextReaderMoveToElement (xmlTextReaderPtr reader
);
241 XMLPUBFUN
int XMLCALL
242 xmlTextReaderNormalization (xmlTextReaderPtr reader
);
243 XMLPUBFUN
const xmlChar
* XMLCALL
244 xmlTextReaderConstEncoding (xmlTextReaderPtr reader
);
249 XMLPUBFUN
int XMLCALL
250 xmlTextReaderSetParserProp (xmlTextReaderPtr reader
,
253 XMLPUBFUN
int XMLCALL
254 xmlTextReaderGetParserProp (xmlTextReaderPtr reader
,
256 XMLPUBFUN xmlNodePtr XMLCALL
257 xmlTextReaderCurrentNode (xmlTextReaderPtr reader
);
259 XMLPUBFUN
int XMLCALL
260 xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader
);
262 XMLPUBFUN
int XMLCALL
263 xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader
);
265 XMLPUBFUN xmlNodePtr XMLCALL
266 xmlTextReaderPreserve (xmlTextReaderPtr reader
);
267 #ifdef LIBXML_PATTERN_ENABLED
268 XMLPUBFUN
int XMLCALL
269 xmlTextReaderPreservePattern(xmlTextReaderPtr reader
,
270 const xmlChar
*pattern
,
271 const xmlChar
**namespaces
);
272 #endif /* LIBXML_PATTERN_ENABLED */
273 XMLPUBFUN xmlDocPtr XMLCALL
274 xmlTextReaderCurrentDoc (xmlTextReaderPtr reader
);
275 XMLPUBFUN xmlNodePtr XMLCALL
276 xmlTextReaderExpand (xmlTextReaderPtr reader
);
277 XMLPUBFUN
int XMLCALL
278 xmlTextReaderNext (xmlTextReaderPtr reader
);
279 XMLPUBFUN
int XMLCALL
280 xmlTextReaderNextSibling (xmlTextReaderPtr reader
);
281 XMLPUBFUN
int XMLCALL
282 xmlTextReaderIsValid (xmlTextReaderPtr reader
);
283 #ifdef LIBXML_SCHEMAS_ENABLED
284 XMLPUBFUN
int XMLCALL
285 xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader
,
287 XMLPUBFUN
int XMLCALL
288 xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader
,
289 xmlRelaxNGValidCtxtPtr ctxt
,
292 XMLPUBFUN
int XMLCALL
293 xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader
,
294 xmlRelaxNGPtr schema
);
295 XMLPUBFUN
int XMLCALL
296 xmlTextReaderSchemaValidate (xmlTextReaderPtr reader
,
298 XMLPUBFUN
int XMLCALL
299 xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader
,
300 xmlSchemaValidCtxtPtr ctxt
,
302 XMLPUBFUN
int XMLCALL
303 xmlTextReaderSetSchema (xmlTextReaderPtr reader
,
304 xmlSchemaPtr schema
);
306 XMLPUBFUN
const xmlChar
* XMLCALL
307 xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader
);
308 XMLPUBFUN
int XMLCALL
309 xmlTextReaderStandalone (xmlTextReaderPtr reader
);
315 XMLPUBFUN
long XMLCALL
316 xmlTextReaderByteConsumed (xmlTextReaderPtr reader
);
319 * New more complete APIs for simpler creation and reuse of readers
321 XMLPUBFUN xmlTextReaderPtr XMLCALL
322 xmlReaderWalker (xmlDocPtr doc
);
323 XMLPUBFUN xmlTextReaderPtr XMLCALL
324 xmlReaderForDoc (const xmlChar
* cur
,
326 const char *encoding
,
328 XMLPUBFUN xmlTextReaderPtr XMLCALL
329 xmlReaderForFile (const char *filename
,
330 const char *encoding
,
332 XMLPUBFUN xmlTextReaderPtr XMLCALL
333 xmlReaderForMemory (const char *buffer
,
336 const char *encoding
,
338 XMLPUBFUN xmlTextReaderPtr XMLCALL
339 xmlReaderForFd (int fd
,
341 const char *encoding
,
343 XMLPUBFUN xmlTextReaderPtr XMLCALL
344 xmlReaderForIO (xmlInputReadCallback ioread
,
345 xmlInputCloseCallback ioclose
,
348 const char *encoding
,
351 XMLPUBFUN
int XMLCALL
352 xmlReaderNewWalker (xmlTextReaderPtr reader
,
354 XMLPUBFUN
int XMLCALL
355 xmlReaderNewDoc (xmlTextReaderPtr reader
,
358 const char *encoding
,
360 XMLPUBFUN
int XMLCALL
361 xmlReaderNewFile (xmlTextReaderPtr reader
,
362 const char *filename
,
363 const char *encoding
,
365 XMLPUBFUN
int XMLCALL
366 xmlReaderNewMemory (xmlTextReaderPtr reader
,
370 const char *encoding
,
372 XMLPUBFUN
int XMLCALL
373 xmlReaderNewFd (xmlTextReaderPtr reader
,
376 const char *encoding
,
378 XMLPUBFUN
int XMLCALL
379 xmlReaderNewIO (xmlTextReaderPtr reader
,
380 xmlInputReadCallback ioread
,
381 xmlInputCloseCallback ioclose
,
384 const char *encoding
,
387 * Error handling extensions
389 typedef void * xmlTextReaderLocatorPtr
;
392 * xmlTextReaderErrorFunc:
393 * @arg: the user argument
395 * @severity: the severity of the error
396 * @locator: a locator indicating where the error occured
398 * Signature of an error callback from a reader parser
400 typedef void (XMLCALL
*xmlTextReaderErrorFunc
)(void *arg
,
402 xmlParserSeverities severity
,
403 xmlTextReaderLocatorPtr locator
);
404 XMLPUBFUN
int XMLCALL
405 xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator
);
406 XMLPUBFUN xmlChar
* XMLCALL
407 xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator
);
408 XMLPUBFUN
void XMLCALL
409 xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader
,
410 xmlTextReaderErrorFunc f
,
412 XMLPUBFUN
void XMLCALL
413 xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader
,
414 xmlStructuredErrorFunc f
,
416 XMLPUBFUN
void XMLCALL
417 xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader
,
418 xmlTextReaderErrorFunc
*f
,
421 #endif /* LIBXML_READER_ENABLED */
427 #endif /* __XML_XMLREADER_H__ */