LTKCPP-- LLRP Toolkit C Plus Plus Library
xmlreader.h
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 
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 
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 
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 
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  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
92 } xmlReaderTypes;
93 
99 typedef struct _xmlTextReader xmlTextReader;
100 
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  xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
289  xmlRelaxNGPtr schema);
290 XMLPUBFUN int XMLCALL
291  xmlTextReaderSchemaValidate (xmlTextReaderPtr reader,
292  const char *xsd);
293 XMLPUBFUN int XMLCALL
294  xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
295  xmlSchemaValidCtxtPtr ctxt,
296  int options);
297 XMLPUBFUN int XMLCALL
298  xmlTextReaderSetSchema (xmlTextReaderPtr reader,
299  xmlSchemaPtr schema);
300 #endif
301 XMLPUBFUN const xmlChar * XMLCALL
302  xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
303 XMLPUBFUN int XMLCALL
304  xmlTextReaderStandalone (xmlTextReaderPtr reader);
305 
306 
307 /*
308  * Index lookup
309  */
310 XMLPUBFUN long XMLCALL
311  xmlTextReaderByteConsumed (xmlTextReaderPtr reader);
312 
313 /*
314  * New more complete APIs for simpler creation and reuse of readers
315  */
316 XMLPUBFUN xmlTextReaderPtr XMLCALL
317  xmlReaderWalker (xmlDocPtr doc);
318 XMLPUBFUN xmlTextReaderPtr XMLCALL
319  xmlReaderForDoc (const xmlChar * cur,
320  const char *URL,
321  const char *encoding,
322  int options);
323 XMLPUBFUN xmlTextReaderPtr XMLCALL
324  xmlReaderForFile (const char *filename,
325  const char *encoding,
326  int options);
327 XMLPUBFUN xmlTextReaderPtr XMLCALL
328  xmlReaderForMemory (const char *buffer,
329  int size,
330  const char *URL,
331  const char *encoding,
332  int options);
333 XMLPUBFUN xmlTextReaderPtr XMLCALL
334  xmlReaderForFd (int fd,
335  const char *URL,
336  const char *encoding,
337  int options);
338 XMLPUBFUN xmlTextReaderPtr XMLCALL
339  xmlReaderForIO (xmlInputReadCallback ioread,
340  xmlInputCloseCallback ioclose,
341  void *ioctx,
342  const char *URL,
343  const char *encoding,
344  int options);
345 
346 XMLPUBFUN int XMLCALL
347  xmlReaderNewWalker (xmlTextReaderPtr reader,
348  xmlDocPtr doc);
349 XMLPUBFUN int XMLCALL
350  xmlReaderNewDoc (xmlTextReaderPtr reader,
351  const xmlChar * cur,
352  const char *URL,
353  const char *encoding,
354  int options);
355 XMLPUBFUN int XMLCALL
356  xmlReaderNewFile (xmlTextReaderPtr reader,
357  const char *filename,
358  const char *encoding,
359  int options);
360 XMLPUBFUN int XMLCALL
361  xmlReaderNewMemory (xmlTextReaderPtr reader,
362  const char *buffer,
363  int size,
364  const char *URL,
365  const char *encoding,
366  int options);
367 XMLPUBFUN int XMLCALL
368  xmlReaderNewFd (xmlTextReaderPtr reader,
369  int fd,
370  const char *URL,
371  const char *encoding,
372  int options);
373 XMLPUBFUN int XMLCALL
374  xmlReaderNewIO (xmlTextReaderPtr reader,
375  xmlInputReadCallback ioread,
376  xmlInputCloseCallback ioclose,
377  void *ioctx,
378  const char *URL,
379  const char *encoding,
380  int options);
381 /*
382  * Error handling extensions
383  */
384 typedef void * xmlTextReaderLocatorPtr;
385 
395 typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
396  const char *msg,
397  xmlParserSeverities severity,
398  xmlTextReaderLocatorPtr locator);
399 XMLPUBFUN int XMLCALL
400  xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
401 /*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
402 XMLPUBFUN xmlChar * XMLCALL
403  xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
404 XMLPUBFUN void XMLCALL
405  xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
406  xmlTextReaderErrorFunc f,
407  void *arg);
408 XMLPUBFUN void XMLCALL
409  xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
410  xmlStructuredErrorFunc f,
411  void *arg);
412 XMLPUBFUN void XMLCALL
413  xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
414  xmlTextReaderErrorFunc *f,
415  void **arg);
416 
417 #endif /* LIBXML_READER_ENABLED */
418 
419 #ifdef __cplusplus
420 }
421 #endif
422 
423 #endif /* __XML_XMLREADER_H__ */
424