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>
21 #ifdef LIBXML_READER_ENABLED
30 * Internal state values for the reader.
33 XML_TEXTREADER_MODE_INITIAL = 0,
34 XML_TEXTREADER_MODE_INTERACTIVE = 1,
35 XML_TEXTREADER_MODE_ERROR = 2,
36 XML_TEXTREADER_MODE_EOF =3,
37 XML_TEXTREADER_MODE_CLOSED = 4,
38 XML_TEXTREADER_MODE_READING = 5
42 * xmlParserProperties:
44 * Some common options to use with xmlTextReaderSetParserProp, but it
45 * is better to use xmlParserOption and the xmlReaderNewxxx and
46 * xmlReaderForxxx APIs now.
49 XML_PARSER_LOADDTD = 1,
50 XML_PARSER_DEFAULTATTRS = 2,
51 XML_PARSER_VALIDATE = 3,
52 XML_PARSER_SUBST_ENTITIES = 4
53 } xmlParserProperties;
56 * xmlParserSeverities:
58 * How severe an error callback is when the per-reader error callback API
62 XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
63 XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
64 XML_PARSER_SEVERITY_WARNING = 3,
65 XML_PARSER_SEVERITY_ERROR = 4
66 } xmlParserSeverities;
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);
116 XMLPUBFUN void XMLCALL
117 xmlFreeTextReader (xmlTextReaderPtr reader);
122 XMLPUBFUN int XMLCALL
123 xmlTextReaderRead (xmlTextReaderPtr reader);
125 #ifdef LIBXML_WRITER_ENABLED
126 XMLPUBFUN xmlChar * XMLCALL
127 xmlTextReaderReadInnerXml (xmlTextReaderPtr reader);
129 XMLPUBFUN xmlChar * XMLCALL
130 xmlTextReaderReadOuterXml (xmlTextReaderPtr reader);
133 XMLPUBFUN xmlChar * XMLCALL
134 xmlTextReaderReadString (xmlTextReaderPtr reader);
135 XMLPUBFUN int XMLCALL
136 xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader);
139 * Attributes of the node
141 XMLPUBFUN int XMLCALL
142 xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
143 XMLPUBFUN int XMLCALL
144 xmlTextReaderDepth (xmlTextReaderPtr reader);
145 XMLPUBFUN int XMLCALL
146 xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
147 XMLPUBFUN int XMLCALL
148 xmlTextReaderHasValue(xmlTextReaderPtr reader);
149 XMLPUBFUN int XMLCALL
150 xmlTextReaderIsDefault (xmlTextReaderPtr reader);
151 XMLPUBFUN int XMLCALL
152 xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
153 XMLPUBFUN int XMLCALL
154 xmlTextReaderNodeType (xmlTextReaderPtr reader);
155 XMLPUBFUN int XMLCALL
156 xmlTextReaderQuoteChar (xmlTextReaderPtr reader);
157 XMLPUBFUN int XMLCALL
158 xmlTextReaderReadState (xmlTextReaderPtr reader);
159 XMLPUBFUN int XMLCALL
160 xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
162 XMLPUBFUN const xmlChar * XMLCALL
163 xmlTextReaderConstBaseUri (xmlTextReaderPtr reader);
164 XMLPUBFUN const xmlChar * XMLCALL
165 xmlTextReaderConstLocalName (xmlTextReaderPtr reader);
166 XMLPUBFUN const xmlChar * XMLCALL
167 xmlTextReaderConstName (xmlTextReaderPtr reader);
168 XMLPUBFUN const xmlChar * XMLCALL
169 xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
170 XMLPUBFUN const xmlChar * XMLCALL
171 xmlTextReaderConstPrefix (xmlTextReaderPtr reader);
172 XMLPUBFUN const xmlChar * XMLCALL
173 xmlTextReaderConstXmlLang (xmlTextReaderPtr reader);
174 XMLPUBFUN const xmlChar * XMLCALL
175 xmlTextReaderConstString (xmlTextReaderPtr reader,
177 XMLPUBFUN const xmlChar * XMLCALL
178 xmlTextReaderConstValue (xmlTextReaderPtr reader);
181 * use the Const version of the routine for
182 * better performance and simpler code
184 XMLPUBFUN xmlChar * XMLCALL
185 xmlTextReaderBaseUri (xmlTextReaderPtr reader);
186 XMLPUBFUN xmlChar * XMLCALL
187 xmlTextReaderLocalName (xmlTextReaderPtr reader);
188 XMLPUBFUN xmlChar * XMLCALL
189 xmlTextReaderName (xmlTextReaderPtr reader);
190 XMLPUBFUN xmlChar * XMLCALL
191 xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
192 XMLPUBFUN xmlChar * XMLCALL
193 xmlTextReaderPrefix (xmlTextReaderPtr reader);
194 XMLPUBFUN xmlChar * XMLCALL
195 xmlTextReaderXmlLang (xmlTextReaderPtr reader);
196 XMLPUBFUN xmlChar * XMLCALL
197 xmlTextReaderValue (xmlTextReaderPtr reader);
200 * Methods of the XmlTextReader
202 XMLPUBFUN int XMLCALL
203 xmlTextReaderClose (xmlTextReaderPtr reader);
204 XMLPUBFUN xmlChar * XMLCALL
205 xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader,
207 XMLPUBFUN xmlChar * XMLCALL
208 xmlTextReaderGetAttribute (xmlTextReaderPtr reader,
209 const xmlChar *name);
210 XMLPUBFUN xmlChar * XMLCALL
211 xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader,
212 const xmlChar *localName,
213 const xmlChar *namespaceURI);
214 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
215 xmlTextReaderGetRemainder (xmlTextReaderPtr reader);
216 XMLPUBFUN xmlChar * XMLCALL
217 xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
218 const xmlChar *prefix);
219 XMLPUBFUN int XMLCALL
220 xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
222 XMLPUBFUN int XMLCALL
223 xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
224 const xmlChar *name);
225 XMLPUBFUN int XMLCALL
226 xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
227 const xmlChar *localName,
228 const xmlChar *namespaceURI);
229 XMLPUBFUN int XMLCALL
230 xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
231 XMLPUBFUN int XMLCALL
232 xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
233 XMLPUBFUN int XMLCALL
234 xmlTextReaderMoveToElement (xmlTextReaderPtr reader);
235 XMLPUBFUN int XMLCALL
236 xmlTextReaderNormalization (xmlTextReaderPtr reader);
237 XMLPUBFUN const xmlChar * XMLCALL
238 xmlTextReaderConstEncoding (xmlTextReaderPtr reader);
243 XMLPUBFUN int XMLCALL
244 xmlTextReaderSetParserProp (xmlTextReaderPtr reader,
247 XMLPUBFUN int XMLCALL
248 xmlTextReaderGetParserProp (xmlTextReaderPtr reader,
250 XMLPUBFUN xmlNodePtr XMLCALL
251 xmlTextReaderCurrentNode (xmlTextReaderPtr reader);
253 XMLPUBFUN int XMLCALL
254 xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
256 XMLPUBFUN int XMLCALL
257 xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
259 XMLPUBFUN xmlNodePtr XMLCALL
260 xmlTextReaderPreserve (xmlTextReaderPtr reader);
261 #ifdef LIBXML_PATTERN_ENABLED
262 XMLPUBFUN int XMLCALL
263 xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
264 const xmlChar *pattern,
265 const xmlChar **namespaces);
266 #endif /* LIBXML_PATTERN_ENABLED */
267 XMLPUBFUN xmlDocPtr XMLCALL
268 xmlTextReaderCurrentDoc (xmlTextReaderPtr reader);
269 XMLPUBFUN xmlNodePtr XMLCALL
270 xmlTextReaderExpand (xmlTextReaderPtr reader);
271 XMLPUBFUN int XMLCALL
272 xmlTextReaderNext (xmlTextReaderPtr reader);
273 XMLPUBFUN int XMLCALL
274 xmlTextReaderNextSibling (xmlTextReaderPtr reader);
275 XMLPUBFUN int XMLCALL
276 xmlTextReaderIsValid (xmlTextReaderPtr reader);
277 #ifdef LIBXML_SCHEMAS_ENABLED
278 XMLPUBFUN int XMLCALL
279 xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
281 XMLPUBFUN int XMLCALL
282 xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
283 xmlRelaxNGPtr schema);
284 XMLPUBFUN int XMLCALL
285 xmlTextReaderSchemaValidate (xmlTextReaderPtr reader,
287 XMLPUBFUN int XMLCALL
288 xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
289 xmlSchemaValidCtxtPtr ctxt,
291 XMLPUBFUN int XMLCALL
292 xmlTextReaderSetSchema (xmlTextReaderPtr reader,
293 xmlSchemaPtr schema);
295 XMLPUBFUN const xmlChar * XMLCALL
296 xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
297 XMLPUBFUN int XMLCALL
298 xmlTextReaderStandalone (xmlTextReaderPtr reader);
304 XMLPUBFUN long XMLCALL
305 xmlTextReaderByteConsumed (xmlTextReaderPtr reader);
308 * New more complete APIs for simpler creation and reuse of readers
310 XMLPUBFUN xmlTextReaderPtr XMLCALL
311 xmlReaderWalker (xmlDocPtr doc);
312 XMLPUBFUN xmlTextReaderPtr XMLCALL
313 xmlReaderForDoc (const xmlChar * cur,
315 const char *encoding,
317 XMLPUBFUN xmlTextReaderPtr XMLCALL
318 xmlReaderForFile (const char *filename,
319 const char *encoding,
321 XMLPUBFUN xmlTextReaderPtr XMLCALL
322 xmlReaderForMemory (const char *buffer,
325 const char *encoding,
327 XMLPUBFUN xmlTextReaderPtr XMLCALL
328 xmlReaderForFd (int fd,
330 const char *encoding,
332 XMLPUBFUN xmlTextReaderPtr XMLCALL
333 xmlReaderForIO (xmlInputReadCallback ioread,
334 xmlInputCloseCallback ioclose,
337 const char *encoding,
340 XMLPUBFUN int XMLCALL
341 xmlReaderNewWalker (xmlTextReaderPtr reader,
343 XMLPUBFUN int XMLCALL
344 xmlReaderNewDoc (xmlTextReaderPtr reader,
347 const char *encoding,
349 XMLPUBFUN int XMLCALL
350 xmlReaderNewFile (xmlTextReaderPtr reader,
351 const char *filename,
352 const char *encoding,
354 XMLPUBFUN int XMLCALL
355 xmlReaderNewMemory (xmlTextReaderPtr reader,
359 const char *encoding,
361 XMLPUBFUN int XMLCALL
362 xmlReaderNewFd (xmlTextReaderPtr reader,
365 const char *encoding,
367 XMLPUBFUN int XMLCALL
368 xmlReaderNewIO (xmlTextReaderPtr reader,
369 xmlInputReadCallback ioread,
370 xmlInputCloseCallback ioclose,
373 const char *encoding,
376 * Error handling extensions
378 typedef void * xmlTextReaderLocatorPtr;
379 typedef void (XMLCALL *xmlTextReaderErrorFunc) (void *arg,
381 xmlParserSeverities severity,
382 xmlTextReaderLocatorPtr locator);
383 XMLPUBFUN int XMLCALL
384 xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
385 /*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
386 XMLPUBFUN xmlChar * XMLCALL
387 xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
388 XMLPUBFUN void XMLCALL
389 xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
390 xmlTextReaderErrorFunc f,
392 XMLPUBFUN void XMLCALL
393 xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
394 xmlStructuredErrorFunc f,
396 XMLPUBFUN void XMLCALL
397 xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
398 xmlTextReaderErrorFunc *f,
405 #endif /* LIBXML_READER_ENABLED */
407 #endif /* __XML_XMLREADER_H__ */