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