1 | /* |
2 | * Summary: the XMLReader implementation |
3 | * Description: API of the XML streaming API based on C# interfaces. |
4 | * |
5 | * Copy: See Copyright for the status of this software. |
6 | * |
7 | * Author: Daniel Veillard |
8 | */ |
9 | |
10 | #ifndef __XML_XMLREADER_H__ |
11 | #define __XML_XMLREADER_H__ |
12 | |
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> |
19 | #endif |
20 | |
21 | #ifdef __cplusplus |
22 | extern "C" { |
23 | #endif |
24 | |
25 | /** |
26 | * xmlParserSeverities: |
27 | * |
28 | * How severe an error callback is when the per-reader error callback API |
29 | * is used. |
30 | */ |
31 | typedef enum { |
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; |
37 | |
38 | #ifdef LIBXML_READER_ENABLED |
39 | |
40 | /** |
41 | * xmlTextReaderMode: |
42 | * |
43 | * Internal state values for the reader. |
44 | */ |
45 | typedef enum { |
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 |
52 | } xmlTextReaderMode; |
53 | |
54 | /** |
55 | * xmlParserProperties: |
56 | * |
57 | * Some common options to use with xmlTextReaderSetParserProp, but it |
58 | * is better to use xmlParserOption and the xmlReaderNewxxx and |
59 | * xmlReaderForxxx APIs now. |
60 | */ |
61 | typedef enum { |
62 | XML_PARSER_LOADDTD = 1, |
63 | XML_PARSER_DEFAULTATTRS = 2, |
64 | XML_PARSER_VALIDATE = 3, |
65 | XML_PARSER_SUBST_ENTITIES = 4 |
66 | } xmlParserProperties; |
67 | |
68 | /** |
69 | * xmlReaderTypes: |
70 | * |
71 | * Predefined constants for the different types of nodes. |
72 | */ |
73 | typedef enum { |
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 | = 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 |
92 | } xmlReaderTypes; |
93 | |
94 | /** |
95 | * xmlTextReader: |
96 | * |
97 | * Structure for an xmlReader context. |
98 | */ |
99 | typedef struct _xmlTextReader xmlTextReader; |
100 | |
101 | /** |
102 | * xmlTextReaderPtr: |
103 | * |
104 | * Pointer to an xmlReader context. |
105 | */ |
106 | typedef xmlTextReader *xmlTextReaderPtr; |
107 | |
108 | /* |
109 | * Constructors & Destructor |
110 | */ |
111 | XMLPUBFUN xmlTextReaderPtr XMLCALL |
112 | xmlNewTextReader (xmlParserInputBufferPtr input, |
113 | const char *URI); |
114 | XMLPUBFUN xmlTextReaderPtr XMLCALL |
115 | xmlNewTextReaderFilename(const char *URI); |
116 | |
117 | XMLPUBFUN void XMLCALL |
118 | xmlFreeTextReader (xmlTextReaderPtr reader); |
119 | |
120 | XMLPUBFUN int XMLCALL |
121 | xmlTextReaderSetup(xmlTextReaderPtr reader, |
122 | xmlParserInputBufferPtr input, const char *URL, |
123 | const char *encoding, int options); |
124 | |
125 | /* |
126 | * Iterators |
127 | */ |
128 | XMLPUBFUN int XMLCALL |
129 | xmlTextReaderRead (xmlTextReaderPtr reader); |
130 | |
131 | #ifdef LIBXML_WRITER_ENABLED |
132 | XMLPUBFUN xmlChar * XMLCALL |
133 | xmlTextReaderReadInnerXml(xmlTextReaderPtr reader); |
134 | |
135 | XMLPUBFUN xmlChar * XMLCALL |
136 | xmlTextReaderReadOuterXml(xmlTextReaderPtr reader); |
137 | #endif |
138 | |
139 | XMLPUBFUN xmlChar * XMLCALL |
140 | xmlTextReaderReadString (xmlTextReaderPtr reader); |
141 | XMLPUBFUN int XMLCALL |
142 | xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader); |
143 | |
144 | /* |
145 | * Attributes of the node |
146 | */ |
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); |
167 | |
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, |
182 | const xmlChar *str); |
183 | XMLPUBFUN const xmlChar * XMLCALL |
184 | xmlTextReaderConstValue (xmlTextReaderPtr reader); |
185 | |
186 | /* |
187 | * use the Const version of the routine for |
188 | * better performance and simpler code |
189 | */ |
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); |
204 | |
205 | /* |
206 | * Methods of the XmlTextReader |
207 | */ |
208 | XMLPUBFUN int XMLCALL |
209 | xmlTextReaderClose (xmlTextReaderPtr reader); |
210 | XMLPUBFUN xmlChar * XMLCALL |
211 | xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader, |
212 | int no); |
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, |
227 | int no); |
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); |
245 | |
246 | /* |
247 | * Extensions |
248 | */ |
249 | XMLPUBFUN int XMLCALL |
250 | xmlTextReaderSetParserProp (xmlTextReaderPtr reader, |
251 | int prop, |
252 | int value); |
253 | XMLPUBFUN int XMLCALL |
254 | xmlTextReaderGetParserProp (xmlTextReaderPtr reader, |
255 | int prop); |
256 | XMLPUBFUN xmlNodePtr XMLCALL |
257 | xmlTextReaderCurrentNode (xmlTextReaderPtr reader); |
258 | |
259 | XMLPUBFUN int XMLCALL |
260 | xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader); |
261 | |
262 | XMLPUBFUN int XMLCALL |
263 | xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader); |
264 | |
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, |
286 | const char *rng); |
287 | XMLPUBFUN int XMLCALL |
288 | xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader, |
289 | xmlRelaxNGValidCtxtPtr ctxt, |
290 | int options); |
291 | |
292 | XMLPUBFUN int XMLCALL |
293 | xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, |
294 | xmlRelaxNGPtr schema); |
295 | XMLPUBFUN int XMLCALL |
296 | xmlTextReaderSchemaValidate (xmlTextReaderPtr reader, |
297 | const char *xsd); |
298 | XMLPUBFUN int XMLCALL |
299 | xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader, |
300 | xmlSchemaValidCtxtPtr ctxt, |
301 | int options); |
302 | XMLPUBFUN int XMLCALL |
303 | xmlTextReaderSetSchema (xmlTextReaderPtr reader, |
304 | xmlSchemaPtr schema); |
305 | #endif |
306 | XMLPUBFUN const xmlChar * XMLCALL |
307 | xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader); |
308 | XMLPUBFUN int XMLCALL |
309 | xmlTextReaderStandalone (xmlTextReaderPtr reader); |
310 | |
311 | |
312 | /* |
313 | * Index lookup |
314 | */ |
315 | XMLPUBFUN long XMLCALL |
316 | xmlTextReaderByteConsumed (xmlTextReaderPtr reader); |
317 | |
318 | /* |
319 | * New more complete APIs for simpler creation and reuse of readers |
320 | */ |
321 | XMLPUBFUN xmlTextReaderPtr XMLCALL |
322 | xmlReaderWalker (xmlDocPtr doc); |
323 | XMLPUBFUN xmlTextReaderPtr XMLCALL |
324 | xmlReaderForDoc (const xmlChar * cur, |
325 | const char *URL, |
326 | const char *encoding, |
327 | int options); |
328 | XMLPUBFUN xmlTextReaderPtr XMLCALL |
329 | xmlReaderForFile (const char *filename, |
330 | const char *encoding, |
331 | int options); |
332 | XMLPUBFUN xmlTextReaderPtr XMLCALL |
333 | xmlReaderForMemory (const char *buffer, |
334 | int size, |
335 | const char *URL, |
336 | const char *encoding, |
337 | int options); |
338 | XMLPUBFUN xmlTextReaderPtr XMLCALL |
339 | xmlReaderForFd (int fd, |
340 | const char *URL, |
341 | const char *encoding, |
342 | int options); |
343 | XMLPUBFUN xmlTextReaderPtr XMLCALL |
344 | xmlReaderForIO (xmlInputReadCallback ioread, |
345 | xmlInputCloseCallback ioclose, |
346 | void *ioctx, |
347 | const char *URL, |
348 | const char *encoding, |
349 | int options); |
350 | |
351 | XMLPUBFUN int XMLCALL |
352 | xmlReaderNewWalker (xmlTextReaderPtr reader, |
353 | xmlDocPtr doc); |
354 | XMLPUBFUN int XMLCALL |
355 | xmlReaderNewDoc (xmlTextReaderPtr reader, |
356 | const xmlChar * cur, |
357 | const char *URL, |
358 | const char *encoding, |
359 | int options); |
360 | XMLPUBFUN int XMLCALL |
361 | xmlReaderNewFile (xmlTextReaderPtr reader, |
362 | const char *filename, |
363 | const char *encoding, |
364 | int options); |
365 | XMLPUBFUN int XMLCALL |
366 | xmlReaderNewMemory (xmlTextReaderPtr reader, |
367 | const char *buffer, |
368 | int size, |
369 | const char *URL, |
370 | const char *encoding, |
371 | int options); |
372 | XMLPUBFUN int XMLCALL |
373 | xmlReaderNewFd (xmlTextReaderPtr reader, |
374 | int fd, |
375 | const char *URL, |
376 | const char *encoding, |
377 | int options); |
378 | XMLPUBFUN int XMLCALL |
379 | xmlReaderNewIO (xmlTextReaderPtr reader, |
380 | xmlInputReadCallback ioread, |
381 | xmlInputCloseCallback ioclose, |
382 | void *ioctx, |
383 | const char *URL, |
384 | const char *encoding, |
385 | int options); |
386 | /* |
387 | * Error handling extensions |
388 | */ |
389 | typedef void * xmlTextReaderLocatorPtr; |
390 | |
391 | /** |
392 | * xmlTextReaderErrorFunc: |
393 | * @arg: the user argument |
394 | * @msg: the message |
395 | * @severity: the severity of the error |
396 | * @locator: a locator indicating where the error occurred |
397 | * |
398 | * Signature of an error callback from a reader parser |
399 | */ |
400 | typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg, |
401 | const char *msg, |
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, |
411 | void *arg); |
412 | XMLPUBFUN void XMLCALL |
413 | xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, |
414 | xmlStructuredErrorFunc f, |
415 | void *arg); |
416 | XMLPUBFUN void XMLCALL |
417 | xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, |
418 | xmlTextReaderErrorFunc *f, |
419 | void **arg); |
420 | |
421 | #endif /* LIBXML_READER_ENABLED */ |
422 | |
423 | #ifdef __cplusplus |
424 | } |
425 | #endif |
426 | |
427 | #endif /* __XML_XMLREADER_H__ */ |
428 | |
429 | |