|
1 /* |
|
2 * Summary: text writing API for XML |
|
3 * Description: text writing API for XML |
|
4 * |
|
5 * Copy: See Copyright for the status of this software. |
|
6 * |
|
7 * Author: Alfred Mickautsch <alfred@mickautsch.de> |
|
8 * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. |
|
9 */ |
|
10 |
|
11 /** @file |
|
12 @publishedAll |
|
13 @released |
|
14 */ |
|
15 |
|
16 #ifndef XML_XMLWRITER_H |
|
17 #define XML_XMLWRITER_H |
|
18 |
|
19 #include <stdarg.h> |
|
20 #include <stdapis/libxml2/libxml2_xmlio.h> |
|
21 #include <stdapis/libxml2/libxml2_list.h> |
|
22 #include <stdapis/libxml2/libxml2_xmlstring.h> |
|
23 |
|
24 #ifdef LIBXML_WRITER_ENABLED |
|
25 |
|
26 #ifdef __cplusplus |
|
27 extern "C" { |
|
28 #endif |
|
29 |
|
30 typedef struct _xmlTextWriter xmlTextWriter; |
|
31 typedef xmlTextWriter *xmlTextWriterPtr; |
|
32 // Moved from Libxml2_xmlwriter.cpp |
|
33 struct _xmlTextWriter { |
|
34 xmlOutputBufferPtr out; /* output buffer */ |
|
35 xmlListPtr nodes; /* element name stack */ |
|
36 xmlListPtr nsstack; /* name spaces stack */ |
|
37 int level; |
|
38 int indent; /* enable indent */ |
|
39 int doindent; /* internal indent flag */ |
|
40 xmlChar *ichar; /* indent character */ |
|
41 char qchar; /* character used for quoting attribute values */ |
|
42 xmlParserCtxtPtr ctxt; |
|
43 }; |
|
44 |
|
45 /* |
|
46 * Constructors & Destructor |
|
47 */ |
|
48 XMLPUBFUN xmlTextWriterPtr XMLCALL |
|
49 xmlNewTextWriter(xmlOutputBufferPtr out); |
|
50 XMLPUBFUN xmlTextWriterPtr XMLCALL |
|
51 xmlNewTextWriterFilename(const char *uri, int compression); |
|
52 XMLPUBFUN xmlTextWriterPtr XMLCALL |
|
53 xmlNewTextWriterMemory(xmlBufferPtr buf, int compression); |
|
54 XMLPUBFUN xmlTextWriterPtr XMLCALL |
|
55 xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression); |
|
56 XMLPUBFUN xmlTextWriterPtr XMLCALL |
|
57 xmlNewTextWriterDoc(xmlDocPtr * doc, int compression); |
|
58 XMLPUBFUN xmlTextWriterPtr XMLCALL |
|
59 xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node, |
|
60 int compression); |
|
61 XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer); |
|
62 |
|
63 /* |
|
64 * Functions |
|
65 */ |
|
66 |
|
67 |
|
68 /* |
|
69 * Document |
|
70 */ |
|
71 XMLPUBFUN int XMLCALL |
|
72 xmlTextWriterStartDocument(xmlTextWriterPtr writer, |
|
73 const char *version, |
|
74 const char *encoding, |
|
75 const char *standalone); |
|
76 XMLPUBFUN int XMLCALL xmlTextWriterEndDocument(xmlTextWriterPtr |
|
77 writer); |
|
78 |
|
79 /* |
|
80 * Comments |
|
81 */ |
|
82 XMLPUBFUN int XMLCALL xmlTextWriterStartComment(xmlTextWriterPtr |
|
83 writer); |
|
84 XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer); |
|
85 XMLPUBFUN int XMLCALL |
|
86 xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, |
|
87 const char *format, ...); |
|
88 XMLPUBFUN int XMLCALL |
|
89 xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer, |
|
90 const char *format, |
|
91 va_list argptr); |
|
92 XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr |
|
93 writer, |
|
94 const xmlChar * |
|
95 content); |
|
96 |
|
97 /* |
|
98 * Elements |
|
99 */ |
|
100 XMLPUBFUN int XMLCALL |
|
101 xmlTextWriterStartElement(xmlTextWriterPtr writer, |
|
102 const xmlChar * name); |
|
103 XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr |
|
104 writer, |
|
105 const xmlChar * |
|
106 prefix, |
|
107 const xmlChar * name, |
|
108 const xmlChar * |
|
109 namespaceURI); |
|
110 XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer); |
|
111 XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr |
|
112 writer); |
|
113 |
|
114 /* |
|
115 * Elements conveniency functions |
|
116 */ |
|
117 XMLPUBFUN int XMLCALL |
|
118 xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, |
|
119 const xmlChar * name, |
|
120 const char *format, ...); |
|
121 XMLPUBFUN int XMLCALL |
|
122 xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer, |
|
123 const xmlChar * name, |
|
124 const char *format, |
|
125 va_list argptr); |
|
126 XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr |
|
127 writer, |
|
128 const xmlChar * name, |
|
129 const xmlChar * |
|
130 content); |
|
131 XMLPUBFUN int XMLCALL |
|
132 xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer, |
|
133 const xmlChar * prefix, |
|
134 const xmlChar * name, |
|
135 const xmlChar * namespaceURI, |
|
136 const char *format, ...); |
|
137 XMLPUBFUN int XMLCALL |
|
138 xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer, |
|
139 const xmlChar * prefix, |
|
140 const xmlChar * name, |
|
141 const xmlChar * namespaceURI, |
|
142 const char *format, |
|
143 va_list argptr); |
|
144 XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr |
|
145 writer, |
|
146 const xmlChar * |
|
147 prefix, |
|
148 const xmlChar * name, |
|
149 const xmlChar * |
|
150 namespaceURI, |
|
151 const xmlChar * |
|
152 content); |
|
153 |
|
154 /* |
|
155 * Text |
|
156 */ |
|
157 XMLPUBFUN int XMLCALL |
|
158 xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, |
|
159 const char *format, ...); |
|
160 XMLPUBFUN int XMLCALL |
|
161 xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, |
|
162 const char *format, va_list argptr); |
|
163 XMLPUBFUN int XMLCALL |
|
164 xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, |
|
165 const xmlChar * content, int len); |
|
166 XMLPUBFUN int XMLCALL |
|
167 xmlTextWriterWriteRaw(xmlTextWriterPtr writer, |
|
168 const xmlChar * content); |
|
169 XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr |
|
170 writer, |
|
171 const char |
|
172 *format, ...); |
|
173 XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr |
|
174 writer, |
|
175 const char |
|
176 *format, |
|
177 va_list argptr); |
|
178 XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer, |
|
179 const xmlChar * |
|
180 content); |
|
181 XMLPUBFUN int XMLCALL xmlTextWriterWriteBase64(xmlTextWriterPtr writer, |
|
182 const char *data, |
|
183 int start, int len); |
|
184 XMLPUBFUN int XMLCALL xmlTextWriterWriteBinHex(xmlTextWriterPtr writer, |
|
185 const char *data, |
|
186 int start, int len); |
|
187 |
|
188 /* |
|
189 * Attributes |
|
190 */ |
|
191 XMLPUBFUN int XMLCALL |
|
192 xmlTextWriterStartAttribute(xmlTextWriterPtr writer, |
|
193 const xmlChar * name); |
|
194 XMLPUBFUN int XMLCALL xmlTextWriterStartAttributeNS(xmlTextWriterPtr |
|
195 writer, |
|
196 const xmlChar * |
|
197 prefix, |
|
198 const xmlChar * |
|
199 name, |
|
200 const xmlChar * |
|
201 namespaceURI); |
|
202 XMLPUBFUN int XMLCALL xmlTextWriterEndAttribute(xmlTextWriterPtr |
|
203 writer); |
|
204 |
|
205 /* |
|
206 * Attributes conveniency functions |
|
207 */ |
|
208 XMLPUBFUN int XMLCALL |
|
209 xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, |
|
210 const xmlChar * name, |
|
211 const char *format, ...); |
|
212 XMLPUBFUN int XMLCALL |
|
213 xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer, |
|
214 const xmlChar * name, |
|
215 const char *format, |
|
216 va_list argptr); |
|
217 XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr |
|
218 writer, |
|
219 const xmlChar * name, |
|
220 const xmlChar * |
|
221 content); |
|
222 XMLPUBFUN int XMLCALL |
|
223 xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer, |
|
224 const xmlChar * prefix, |
|
225 const xmlChar * name, |
|
226 const xmlChar * namespaceURI, |
|
227 const char *format, ...); |
|
228 XMLPUBFUN int XMLCALL |
|
229 xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer, |
|
230 const xmlChar * prefix, |
|
231 const xmlChar * name, |
|
232 const xmlChar * namespaceURI, |
|
233 const char *format, |
|
234 va_list argptr); |
|
235 XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr |
|
236 writer, |
|
237 const xmlChar * |
|
238 prefix, |
|
239 const xmlChar * |
|
240 name, |
|
241 const xmlChar * |
|
242 namespaceURI, |
|
243 const xmlChar * |
|
244 content); |
|
245 |
|
246 /* |
|
247 * PI's |
|
248 */ |
|
249 XMLPUBFUN int XMLCALL |
|
250 xmlTextWriterStartPI(xmlTextWriterPtr writer, |
|
251 const xmlChar * target); |
|
252 XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer); |
|
253 |
|
254 /* |
|
255 * PI conveniency functions |
|
256 */ |
|
257 XMLPUBFUN int XMLCALL |
|
258 xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, |
|
259 const xmlChar * target, |
|
260 const char *format, ...); |
|
261 XMLPUBFUN int XMLCALL |
|
262 xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer, |
|
263 const xmlChar * target, |
|
264 const char *format, va_list argptr); |
|
265 XMLPUBFUN int XMLCALL |
|
266 xmlTextWriterWritePI(xmlTextWriterPtr writer, |
|
267 const xmlChar * target, |
|
268 const xmlChar * content); |
|
269 |
|
270 /** |
|
271 * xmlTextWriterWriteProcessingInstruction: |
|
272 * |
|
273 * This macro maps to xmlTextWriterWritePI |
|
274 */ |
|
275 #define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI |
|
276 |
|
277 /* |
|
278 * CDATA |
|
279 */ |
|
280 XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer); |
|
281 XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer); |
|
282 |
|
283 /* |
|
284 * CDATA conveniency functions |
|
285 */ |
|
286 XMLPUBFUN int XMLCALL |
|
287 xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, |
|
288 const char *format, ...); |
|
289 XMLPUBFUN int XMLCALL |
|
290 xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, |
|
291 const char *format, va_list argptr); |
|
292 XMLPUBFUN int XMLCALL |
|
293 xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, |
|
294 const xmlChar * content); |
|
295 |
|
296 /* |
|
297 * DTD |
|
298 */ |
|
299 XMLPUBFUN int XMLCALL |
|
300 xmlTextWriterStartDTD(xmlTextWriterPtr writer, |
|
301 const xmlChar * name, |
|
302 const xmlChar * pubid, |
|
303 const xmlChar * sysid); |
|
304 XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer); |
|
305 |
|
306 /* |
|
307 * DTD conveniency functions |
|
308 */ |
|
309 XMLPUBFUN int XMLCALL |
|
310 xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer, |
|
311 const xmlChar * name, |
|
312 const xmlChar * pubid, |
|
313 const xmlChar * sysid, |
|
314 const char *format, ...); |
|
315 XMLPUBFUN int XMLCALL |
|
316 xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer, |
|
317 const xmlChar * name, |
|
318 const xmlChar * pubid, |
|
319 const xmlChar * sysid, |
|
320 const char *format, va_list argptr); |
|
321 XMLPUBFUN int XMLCALL |
|
322 xmlTextWriterWriteDTD(xmlTextWriterPtr writer, |
|
323 const xmlChar * name, |
|
324 const xmlChar * pubid, |
|
325 const xmlChar * sysid, |
|
326 const xmlChar * subset); |
|
327 |
|
328 /** |
|
329 * xmlTextWriterWriteDocType: |
|
330 * |
|
331 * this macro maps to xmlTextWriterWriteDTD |
|
332 */ |
|
333 #define xmlTextWriterWriteDocType xmlTextWriterWriteDTD |
|
334 |
|
335 /* |
|
336 * DTD element definition |
|
337 */ |
|
338 XMLPUBFUN int XMLCALL |
|
339 xmlTextWriterStartDTDElement(xmlTextWriterPtr writer, |
|
340 const xmlChar * name); |
|
341 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr |
|
342 writer); |
|
343 |
|
344 /* |
|
345 * DTD element definition conveniency functions |
|
346 */ |
|
347 XMLPUBFUN int XMLCALL |
|
348 xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, |
|
349 const xmlChar * name, |
|
350 const char *format, ...); |
|
351 XMLPUBFUN int XMLCALL |
|
352 xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer, |
|
353 const xmlChar * name, |
|
354 const char *format, |
|
355 va_list argptr); |
|
356 XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr |
|
357 writer, |
|
358 const xmlChar * |
|
359 name, |
|
360 const xmlChar * |
|
361 content); |
|
362 |
|
363 /* |
|
364 * DTD attribute list definition |
|
365 */ |
|
366 XMLPUBFUN int XMLCALL |
|
367 xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer, |
|
368 const xmlChar * name); |
|
369 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr |
|
370 writer); |
|
371 |
|
372 /* |
|
373 * DTD attribute list definition conveniency functions |
|
374 */ |
|
375 XMLPUBFUN int XMLCALL |
|
376 xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, |
|
377 const xmlChar * name, |
|
378 const char *format, ...); |
|
379 XMLPUBFUN int XMLCALL |
|
380 xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer, |
|
381 const xmlChar * name, |
|
382 const char *format, |
|
383 va_list argptr); |
|
384 XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr |
|
385 writer, |
|
386 const xmlChar * |
|
387 name, |
|
388 const xmlChar * |
|
389 content); |
|
390 |
|
391 /* |
|
392 * DTD entity definition |
|
393 */ |
|
394 XMLPUBFUN int XMLCALL |
|
395 xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer, |
|
396 int pe, const xmlChar * name); |
|
397 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr |
|
398 writer); |
|
399 |
|
400 /* |
|
401 * DTD entity definition conveniency functions |
|
402 */ |
|
403 XMLPUBFUN int XMLCALL |
|
404 xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, |
|
405 int pe, |
|
406 const xmlChar * name, |
|
407 const char *format, ...); |
|
408 XMLPUBFUN int XMLCALL |
|
409 xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer, |
|
410 int pe, |
|
411 const xmlChar * name, |
|
412 const char *format, |
|
413 va_list argptr); |
|
414 XMLPUBFUN int XMLCALL |
|
415 xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer, |
|
416 int pe, |
|
417 const xmlChar * name, |
|
418 const xmlChar * content); |
|
419 XMLPUBFUN int XMLCALL |
|
420 xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer, |
|
421 int pe, |
|
422 const xmlChar * name, |
|
423 const xmlChar * pubid, |
|
424 const xmlChar * sysid, |
|
425 const xmlChar * ndataid); |
|
426 XMLPUBFUN int XMLCALL |
|
427 xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr |
|
428 writer, |
|
429 const xmlChar * pubid, |
|
430 const xmlChar * sysid, |
|
431 const xmlChar * |
|
432 ndataid); |
|
433 XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDEntity(xmlTextWriterPtr |
|
434 writer, int pe, |
|
435 const xmlChar * name, |
|
436 const xmlChar * |
|
437 pubid, |
|
438 const xmlChar * |
|
439 sysid, |
|
440 const xmlChar * |
|
441 ndataid, |
|
442 const xmlChar * |
|
443 content); |
|
444 |
|
445 /* |
|
446 * DTD notation definition |
|
447 */ |
|
448 XMLPUBFUN int XMLCALL |
|
449 xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer, |
|
450 const xmlChar * name, |
|
451 const xmlChar * pubid, |
|
452 const xmlChar * sysid); |
|
453 |
|
454 /* |
|
455 * Indentation |
|
456 */ |
|
457 XMLPUBFUN int XMLCALL |
|
458 xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent); |
|
459 XMLPUBFUN int XMLCALL |
|
460 xmlTextWriterSetIndentString(xmlTextWriterPtr writer, |
|
461 const xmlChar * str); |
|
462 |
|
463 /* |
|
464 * misc |
|
465 */ |
|
466 XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer); |
|
467 |
|
468 #ifdef __cplusplus |
|
469 } |
|
470 #endif |
|
471 |
|
472 #endif /* LIBXML_WRITER_ENABLED */ |
|
473 |
|
474 #endif /* XML_XMLWRITER_H */ |
|
475 |