1*7c568831SAndroid Build Coastguard Worker /**
2*7c568831SAndroid Build Coastguard Worker * section: xmlWriter
3*7c568831SAndroid Build Coastguard Worker * synopsis: use various APIs for the xmlWriter
4*7c568831SAndroid Build Coastguard Worker * purpose: tests a number of APIs for the xmlWriter, especially
5*7c568831SAndroid Build Coastguard Worker * the various methods to write to a filename, to a memory
6*7c568831SAndroid Build Coastguard Worker * buffer, to a new document, or to a subtree. It shows how to
7*7c568831SAndroid Build Coastguard Worker * do encoding string conversions too. The resulting
8*7c568831SAndroid Build Coastguard Worker * documents are then serialized.
9*7c568831SAndroid Build Coastguard Worker * usage: testWriter
10*7c568831SAndroid Build Coastguard Worker * test: testWriter && for i in 1 2 3 4 ; do diff $(srcdir)/writer.xml writer$$i.tmp || break ; done
11*7c568831SAndroid Build Coastguard Worker * author: Alfred Mickautsch
12*7c568831SAndroid Build Coastguard Worker * copy: see Copyright for the status of this software.
13*7c568831SAndroid Build Coastguard Worker */
14*7c568831SAndroid Build Coastguard Worker #include <stdio.h>
15*7c568831SAndroid Build Coastguard Worker #include <string.h>
16*7c568831SAndroid Build Coastguard Worker #include <libxml/encoding.h>
17*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlwriter.h>
18*7c568831SAndroid Build Coastguard Worker #include <libxml/parser.h>
19*7c568831SAndroid Build Coastguard Worker
20*7c568831SAndroid Build Coastguard Worker #ifndef _WIN32
21*7c568831SAndroid Build Coastguard Worker #include <unistd.h>
22*7c568831SAndroid Build Coastguard Worker #endif
23*7c568831SAndroid Build Coastguard Worker
24*7c568831SAndroid Build Coastguard Worker #if defined(LIBXML_WRITER_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
25*7c568831SAndroid Build Coastguard Worker
26*7c568831SAndroid Build Coastguard Worker #define MY_ENCODING "ISO-8859-1"
27*7c568831SAndroid Build Coastguard Worker
28*7c568831SAndroid Build Coastguard Worker void testXmlwriterFilename(const char *uri);
29*7c568831SAndroid Build Coastguard Worker void testXmlwriterMemory(void);
30*7c568831SAndroid Build Coastguard Worker void testXmlwriterDoc(void);
31*7c568831SAndroid Build Coastguard Worker void testXmlwriterTree(void);
32*7c568831SAndroid Build Coastguard Worker
33*7c568831SAndroid Build Coastguard Worker int
main(void)34*7c568831SAndroid Build Coastguard Worker main(void)
35*7c568831SAndroid Build Coastguard Worker {
36*7c568831SAndroid Build Coastguard Worker /*
37*7c568831SAndroid Build Coastguard Worker * this initialize the library and check potential ABI mismatches
38*7c568831SAndroid Build Coastguard Worker * between the version it was compiled for and the actual shared
39*7c568831SAndroid Build Coastguard Worker * library used.
40*7c568831SAndroid Build Coastguard Worker */
41*7c568831SAndroid Build Coastguard Worker LIBXML_TEST_VERSION
42*7c568831SAndroid Build Coastguard Worker
43*7c568831SAndroid Build Coastguard Worker /* first, the file version */
44*7c568831SAndroid Build Coastguard Worker testXmlwriterFilename("writer1.tmp");
45*7c568831SAndroid Build Coastguard Worker unlink("writer1.tmp");
46*7c568831SAndroid Build Coastguard Worker
47*7c568831SAndroid Build Coastguard Worker /* next, the memory version */
48*7c568831SAndroid Build Coastguard Worker testXmlwriterMemory();
49*7c568831SAndroid Build Coastguard Worker
50*7c568831SAndroid Build Coastguard Worker /* next, the DOM version */
51*7c568831SAndroid Build Coastguard Worker testXmlwriterDoc();
52*7c568831SAndroid Build Coastguard Worker
53*7c568831SAndroid Build Coastguard Worker /* next, the tree version */
54*7c568831SAndroid Build Coastguard Worker testXmlwriterTree();
55*7c568831SAndroid Build Coastguard Worker
56*7c568831SAndroid Build Coastguard Worker return 0;
57*7c568831SAndroid Build Coastguard Worker }
58*7c568831SAndroid Build Coastguard Worker
59*7c568831SAndroid Build Coastguard Worker /**
60*7c568831SAndroid Build Coastguard Worker * testXmlwriterFilename:
61*7c568831SAndroid Build Coastguard Worker * @uri: the output URI
62*7c568831SAndroid Build Coastguard Worker *
63*7c568831SAndroid Build Coastguard Worker * test the xmlWriter interface when writing to a new file
64*7c568831SAndroid Build Coastguard Worker */
65*7c568831SAndroid Build Coastguard Worker void
testXmlwriterFilename(const char * uri)66*7c568831SAndroid Build Coastguard Worker testXmlwriterFilename(const char *uri)
67*7c568831SAndroid Build Coastguard Worker {
68*7c568831SAndroid Build Coastguard Worker int rc;
69*7c568831SAndroid Build Coastguard Worker xmlTextWriterPtr writer;
70*7c568831SAndroid Build Coastguard Worker
71*7c568831SAndroid Build Coastguard Worker /* Create a new XmlWriter for uri, with no compression. */
72*7c568831SAndroid Build Coastguard Worker writer = xmlNewTextWriterFilename(uri, 0);
73*7c568831SAndroid Build Coastguard Worker if (writer == NULL) {
74*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterFilename: Error creating the xml writer\n");
75*7c568831SAndroid Build Coastguard Worker return;
76*7c568831SAndroid Build Coastguard Worker }
77*7c568831SAndroid Build Coastguard Worker
78*7c568831SAndroid Build Coastguard Worker /* Start the document with the xml default for the version,
79*7c568831SAndroid Build Coastguard Worker * encoding ISO 8859-1 and the default for the standalone
80*7c568831SAndroid Build Coastguard Worker * declaration. */
81*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartDocument(writer, NULL, MY_ENCODING, NULL);
82*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
83*7c568831SAndroid Build Coastguard Worker printf
84*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterStartDocument\n");
85*7c568831SAndroid Build Coastguard Worker return;
86*7c568831SAndroid Build Coastguard Worker }
87*7c568831SAndroid Build Coastguard Worker
88*7c568831SAndroid Build Coastguard Worker /* Start an element named "EXAMPLE". Since this is the first
89*7c568831SAndroid Build Coastguard Worker * element, this will be the root element of the document. */
90*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "EXAMPLE");
91*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
92*7c568831SAndroid Build Coastguard Worker printf
93*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterStartElement\n");
94*7c568831SAndroid Build Coastguard Worker return;
95*7c568831SAndroid Build Coastguard Worker }
96*7c568831SAndroid Build Coastguard Worker
97*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteComment(writer, BAD_CAST "This is a comment");
98*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
99*7c568831SAndroid Build Coastguard Worker printf
100*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteComment\n");
101*7c568831SAndroid Build Coastguard Worker return;
102*7c568831SAndroid Build Coastguard Worker }
103*7c568831SAndroid Build Coastguard Worker
104*7c568831SAndroid Build Coastguard Worker /* Start an element named "ORDER" as child of EXAMPLE. */
105*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ORDER");
106*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
107*7c568831SAndroid Build Coastguard Worker printf
108*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterStartElement\n");
109*7c568831SAndroid Build Coastguard Worker return;
110*7c568831SAndroid Build Coastguard Worker }
111*7c568831SAndroid Build Coastguard Worker
112*7c568831SAndroid Build Coastguard Worker /* Add an attribute with name "version" and value "1.0" to ORDER. */
113*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteAttribute(writer, BAD_CAST "version",
114*7c568831SAndroid Build Coastguard Worker BAD_CAST "1.0");
115*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
116*7c568831SAndroid Build Coastguard Worker printf
117*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteAttribute\n");
118*7c568831SAndroid Build Coastguard Worker return;
119*7c568831SAndroid Build Coastguard Worker }
120*7c568831SAndroid Build Coastguard Worker
121*7c568831SAndroid Build Coastguard Worker /* Add an attribute with name "xml:lang" and value "de" to ORDER. */
122*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteAttribute(writer, BAD_CAST "xml:lang",
123*7c568831SAndroid Build Coastguard Worker BAD_CAST "de");
124*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
125*7c568831SAndroid Build Coastguard Worker printf
126*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteAttribute\n");
127*7c568831SAndroid Build Coastguard Worker return;
128*7c568831SAndroid Build Coastguard Worker }
129*7c568831SAndroid Build Coastguard Worker
130*7c568831SAndroid Build Coastguard Worker /* Write a comment as child of ORDER */
131*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteComment(writer, BAD_CAST "This is another comment");
132*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
133*7c568831SAndroid Build Coastguard Worker printf
134*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteFormatComment\n");
135*7c568831SAndroid Build Coastguard Worker return;
136*7c568831SAndroid Build Coastguard Worker }
137*7c568831SAndroid Build Coastguard Worker
138*7c568831SAndroid Build Coastguard Worker /* Start an element named "HEADER" as child of ORDER. */
139*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "HEADER");
140*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
141*7c568831SAndroid Build Coastguard Worker printf
142*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterStartElement\n");
143*7c568831SAndroid Build Coastguard Worker return;
144*7c568831SAndroid Build Coastguard Worker }
145*7c568831SAndroid Build Coastguard Worker
146*7c568831SAndroid Build Coastguard Worker /* Write an element named "X_ORDER_ID" as child of HEADER. */
147*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "X_ORDER_ID",
148*7c568831SAndroid Build Coastguard Worker "%010d", 53535);
149*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
150*7c568831SAndroid Build Coastguard Worker printf
151*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteFormatElement\n");
152*7c568831SAndroid Build Coastguard Worker return;
153*7c568831SAndroid Build Coastguard Worker }
154*7c568831SAndroid Build Coastguard Worker
155*7c568831SAndroid Build Coastguard Worker /* Write an element named "CUSTOMER_ID" as child of HEADER. */
156*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "CUSTOMER_ID",
157*7c568831SAndroid Build Coastguard Worker "%d", 1010);
158*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
159*7c568831SAndroid Build Coastguard Worker printf
160*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteFormatElement\n");
161*7c568831SAndroid Build Coastguard Worker return;
162*7c568831SAndroid Build Coastguard Worker }
163*7c568831SAndroid Build Coastguard Worker
164*7c568831SAndroid Build Coastguard Worker /* Write an element named "NAME_1" as child of HEADER. */
165*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "NAME_1",
166*7c568831SAndroid Build Coastguard Worker BAD_CAST "Mueller");
167*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
168*7c568831SAndroid Build Coastguard Worker printf
169*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteElement\n");
170*7c568831SAndroid Build Coastguard Worker return;
171*7c568831SAndroid Build Coastguard Worker }
172*7c568831SAndroid Build Coastguard Worker
173*7c568831SAndroid Build Coastguard Worker /* Write an element named "NAME_2" as child of HEADER. */
174*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "NAME_2",
175*7c568831SAndroid Build Coastguard Worker BAD_CAST "Joerg");
176*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
177*7c568831SAndroid Build Coastguard Worker printf
178*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteElement\n");
179*7c568831SAndroid Build Coastguard Worker return;
180*7c568831SAndroid Build Coastguard Worker }
181*7c568831SAndroid Build Coastguard Worker
182*7c568831SAndroid Build Coastguard Worker /* Close the element named HEADER. */
183*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
184*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
185*7c568831SAndroid Build Coastguard Worker printf
186*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterEndElement\n");
187*7c568831SAndroid Build Coastguard Worker return;
188*7c568831SAndroid Build Coastguard Worker }
189*7c568831SAndroid Build Coastguard Worker
190*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRIES" as child of ORDER. */
191*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRIES");
192*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
193*7c568831SAndroid Build Coastguard Worker printf
194*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterStartElement\n");
195*7c568831SAndroid Build Coastguard Worker return;
196*7c568831SAndroid Build Coastguard Worker }
197*7c568831SAndroid Build Coastguard Worker
198*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRY" as child of ENTRIES. */
199*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRY");
200*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
201*7c568831SAndroid Build Coastguard Worker printf
202*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterStartElement\n");
203*7c568831SAndroid Build Coastguard Worker return;
204*7c568831SAndroid Build Coastguard Worker }
205*7c568831SAndroid Build Coastguard Worker
206*7c568831SAndroid Build Coastguard Worker /* Write an element named "ARTICLE" as child of ENTRY. */
207*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "ARTICLE",
208*7c568831SAndroid Build Coastguard Worker BAD_CAST "<Test>");
209*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
210*7c568831SAndroid Build Coastguard Worker printf
211*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteElement\n");
212*7c568831SAndroid Build Coastguard Worker return;
213*7c568831SAndroid Build Coastguard Worker }
214*7c568831SAndroid Build Coastguard Worker
215*7c568831SAndroid Build Coastguard Worker /* Write an element named "ENTRY_NO" as child of ENTRY. */
216*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "ENTRY_NO", "%d",
217*7c568831SAndroid Build Coastguard Worker 10);
218*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
219*7c568831SAndroid Build Coastguard Worker printf
220*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteFormatElement\n");
221*7c568831SAndroid Build Coastguard Worker return;
222*7c568831SAndroid Build Coastguard Worker }
223*7c568831SAndroid Build Coastguard Worker
224*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRY. */
225*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
226*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
227*7c568831SAndroid Build Coastguard Worker printf
228*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterEndElement\n");
229*7c568831SAndroid Build Coastguard Worker return;
230*7c568831SAndroid Build Coastguard Worker }
231*7c568831SAndroid Build Coastguard Worker
232*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRY" as child of ENTRIES. */
233*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRY");
234*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
235*7c568831SAndroid Build Coastguard Worker printf
236*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterStartElement\n");
237*7c568831SAndroid Build Coastguard Worker return;
238*7c568831SAndroid Build Coastguard Worker }
239*7c568831SAndroid Build Coastguard Worker
240*7c568831SAndroid Build Coastguard Worker /* Write an element named "ARTICLE" as child of ENTRY. */
241*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "ARTICLE",
242*7c568831SAndroid Build Coastguard Worker BAD_CAST "<Test 2>");
243*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
244*7c568831SAndroid Build Coastguard Worker printf
245*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteElement\n");
246*7c568831SAndroid Build Coastguard Worker return;
247*7c568831SAndroid Build Coastguard Worker }
248*7c568831SAndroid Build Coastguard Worker
249*7c568831SAndroid Build Coastguard Worker /* Write an element named "ENTRY_NO" as child of ENTRY. */
250*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "ENTRY_NO", "%d",
251*7c568831SAndroid Build Coastguard Worker 20);
252*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
253*7c568831SAndroid Build Coastguard Worker printf
254*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteFormatElement\n");
255*7c568831SAndroid Build Coastguard Worker return;
256*7c568831SAndroid Build Coastguard Worker }
257*7c568831SAndroid Build Coastguard Worker
258*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRY. */
259*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
260*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
261*7c568831SAndroid Build Coastguard Worker printf
262*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterEndElement\n");
263*7c568831SAndroid Build Coastguard Worker return;
264*7c568831SAndroid Build Coastguard Worker }
265*7c568831SAndroid Build Coastguard Worker
266*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRIES. */
267*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
268*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
269*7c568831SAndroid Build Coastguard Worker printf
270*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterEndElement\n");
271*7c568831SAndroid Build Coastguard Worker return;
272*7c568831SAndroid Build Coastguard Worker }
273*7c568831SAndroid Build Coastguard Worker
274*7c568831SAndroid Build Coastguard Worker /* Start an element named "FOOTER" as child of ORDER. */
275*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "FOOTER");
276*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
277*7c568831SAndroid Build Coastguard Worker printf
278*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterStartElement\n");
279*7c568831SAndroid Build Coastguard Worker return;
280*7c568831SAndroid Build Coastguard Worker }
281*7c568831SAndroid Build Coastguard Worker
282*7c568831SAndroid Build Coastguard Worker /* Write an element named "TEXT" as child of FOOTER. */
283*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "TEXT",
284*7c568831SAndroid Build Coastguard Worker BAD_CAST "This is a text.");
285*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
286*7c568831SAndroid Build Coastguard Worker printf
287*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterWriteElement\n");
288*7c568831SAndroid Build Coastguard Worker return;
289*7c568831SAndroid Build Coastguard Worker }
290*7c568831SAndroid Build Coastguard Worker
291*7c568831SAndroid Build Coastguard Worker /* Close the element named FOOTER. */
292*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
293*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
294*7c568831SAndroid Build Coastguard Worker printf
295*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterEndElement\n");
296*7c568831SAndroid Build Coastguard Worker return;
297*7c568831SAndroid Build Coastguard Worker }
298*7c568831SAndroid Build Coastguard Worker
299*7c568831SAndroid Build Coastguard Worker /* Here we could close the elements ORDER and EXAMPLE using the
300*7c568831SAndroid Build Coastguard Worker * function xmlTextWriterEndElement, but since we do not want to
301*7c568831SAndroid Build Coastguard Worker * write any other elements, we simply call xmlTextWriterEndDocument,
302*7c568831SAndroid Build Coastguard Worker * which will do all the work. */
303*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndDocument(writer);
304*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
305*7c568831SAndroid Build Coastguard Worker printf
306*7c568831SAndroid Build Coastguard Worker ("testXmlwriterFilename: Error at xmlTextWriterEndDocument\n");
307*7c568831SAndroid Build Coastguard Worker return;
308*7c568831SAndroid Build Coastguard Worker }
309*7c568831SAndroid Build Coastguard Worker
310*7c568831SAndroid Build Coastguard Worker xmlFreeTextWriter(writer);
311*7c568831SAndroid Build Coastguard Worker }
312*7c568831SAndroid Build Coastguard Worker
313*7c568831SAndroid Build Coastguard Worker /**
314*7c568831SAndroid Build Coastguard Worker * testXmlwriterMemory:
315*7c568831SAndroid Build Coastguard Worker * @file: the output file
316*7c568831SAndroid Build Coastguard Worker *
317*7c568831SAndroid Build Coastguard Worker * test the xmlWriter interface when writing to memory
318*7c568831SAndroid Build Coastguard Worker */
319*7c568831SAndroid Build Coastguard Worker void
testXmlwriterMemory(void)320*7c568831SAndroid Build Coastguard Worker testXmlwriterMemory(void)
321*7c568831SAndroid Build Coastguard Worker {
322*7c568831SAndroid Build Coastguard Worker int rc;
323*7c568831SAndroid Build Coastguard Worker xmlTextWriterPtr writer;
324*7c568831SAndroid Build Coastguard Worker xmlBufferPtr buf;
325*7c568831SAndroid Build Coastguard Worker
326*7c568831SAndroid Build Coastguard Worker /* Create a new XML buffer, to which the XML document will be
327*7c568831SAndroid Build Coastguard Worker * written */
328*7c568831SAndroid Build Coastguard Worker buf = xmlBufferCreate();
329*7c568831SAndroid Build Coastguard Worker if (buf == NULL) {
330*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterMemory: Error creating the xml buffer\n");
331*7c568831SAndroid Build Coastguard Worker return;
332*7c568831SAndroid Build Coastguard Worker }
333*7c568831SAndroid Build Coastguard Worker
334*7c568831SAndroid Build Coastguard Worker /* Create a new XmlWriter for memory, with no compression.
335*7c568831SAndroid Build Coastguard Worker * Remark: there is no compression for this kind of xmlTextWriter */
336*7c568831SAndroid Build Coastguard Worker writer = xmlNewTextWriterMemory(buf, 0);
337*7c568831SAndroid Build Coastguard Worker if (writer == NULL) {
338*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterMemory: Error creating the xml writer\n");
339*7c568831SAndroid Build Coastguard Worker return;
340*7c568831SAndroid Build Coastguard Worker }
341*7c568831SAndroid Build Coastguard Worker
342*7c568831SAndroid Build Coastguard Worker /* Start the document with the xml default for the version,
343*7c568831SAndroid Build Coastguard Worker * encoding ISO 8859-1 and the default for the standalone
344*7c568831SAndroid Build Coastguard Worker * declaration. */
345*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartDocument(writer, NULL, MY_ENCODING, NULL);
346*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
347*7c568831SAndroid Build Coastguard Worker printf
348*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterStartDocument\n");
349*7c568831SAndroid Build Coastguard Worker return;
350*7c568831SAndroid Build Coastguard Worker }
351*7c568831SAndroid Build Coastguard Worker
352*7c568831SAndroid Build Coastguard Worker /* Start an element named "EXAMPLE". Since this is the first
353*7c568831SAndroid Build Coastguard Worker * element, this will be the root element of the document. */
354*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "EXAMPLE");
355*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
356*7c568831SAndroid Build Coastguard Worker printf
357*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterStartElement\n");
358*7c568831SAndroid Build Coastguard Worker return;
359*7c568831SAndroid Build Coastguard Worker }
360*7c568831SAndroid Build Coastguard Worker
361*7c568831SAndroid Build Coastguard Worker /* Write a comment as child of EXAMPLE. */
362*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteComment(writer, BAD_CAST "This is a comment");
363*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
364*7c568831SAndroid Build Coastguard Worker printf
365*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteComment\n");
366*7c568831SAndroid Build Coastguard Worker return;
367*7c568831SAndroid Build Coastguard Worker }
368*7c568831SAndroid Build Coastguard Worker
369*7c568831SAndroid Build Coastguard Worker /* Start an element named "ORDER" as child of EXAMPLE. */
370*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ORDER");
371*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
372*7c568831SAndroid Build Coastguard Worker printf
373*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterStartElement\n");
374*7c568831SAndroid Build Coastguard Worker return;
375*7c568831SAndroid Build Coastguard Worker }
376*7c568831SAndroid Build Coastguard Worker
377*7c568831SAndroid Build Coastguard Worker /* Add an attribute with name "version" and value "1.0" to ORDER. */
378*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteAttribute(writer, BAD_CAST "version",
379*7c568831SAndroid Build Coastguard Worker BAD_CAST "1.0");
380*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
381*7c568831SAndroid Build Coastguard Worker printf
382*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteAttribute\n");
383*7c568831SAndroid Build Coastguard Worker return;
384*7c568831SAndroid Build Coastguard Worker }
385*7c568831SAndroid Build Coastguard Worker
386*7c568831SAndroid Build Coastguard Worker /* Add an attribute with name "xml:lang" and value "de" to ORDER. */
387*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteAttribute(writer, BAD_CAST "xml:lang",
388*7c568831SAndroid Build Coastguard Worker BAD_CAST "de");
389*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
390*7c568831SAndroid Build Coastguard Worker printf
391*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteAttribute\n");
392*7c568831SAndroid Build Coastguard Worker return;
393*7c568831SAndroid Build Coastguard Worker }
394*7c568831SAndroid Build Coastguard Worker
395*7c568831SAndroid Build Coastguard Worker /* Write a comment as child of ORDER */
396*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteComment(writer, BAD_CAST "This is another comment");
397*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
398*7c568831SAndroid Build Coastguard Worker printf
399*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteFormatComment\n");
400*7c568831SAndroid Build Coastguard Worker return;
401*7c568831SAndroid Build Coastguard Worker }
402*7c568831SAndroid Build Coastguard Worker
403*7c568831SAndroid Build Coastguard Worker /* Start an element named "HEADER" as child of ORDER. */
404*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "HEADER");
405*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
406*7c568831SAndroid Build Coastguard Worker printf
407*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterStartElement\n");
408*7c568831SAndroid Build Coastguard Worker return;
409*7c568831SAndroid Build Coastguard Worker }
410*7c568831SAndroid Build Coastguard Worker
411*7c568831SAndroid Build Coastguard Worker /* Write an element named "X_ORDER_ID" as child of HEADER. */
412*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "X_ORDER_ID",
413*7c568831SAndroid Build Coastguard Worker "%010d", 53535);
414*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
415*7c568831SAndroid Build Coastguard Worker printf
416*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteFormatElement\n");
417*7c568831SAndroid Build Coastguard Worker return;
418*7c568831SAndroid Build Coastguard Worker }
419*7c568831SAndroid Build Coastguard Worker
420*7c568831SAndroid Build Coastguard Worker /* Write an element named "CUSTOMER_ID" as child of HEADER. */
421*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "CUSTOMER_ID",
422*7c568831SAndroid Build Coastguard Worker "%d", 1010);
423*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
424*7c568831SAndroid Build Coastguard Worker printf
425*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteFormatElement\n");
426*7c568831SAndroid Build Coastguard Worker return;
427*7c568831SAndroid Build Coastguard Worker }
428*7c568831SAndroid Build Coastguard Worker
429*7c568831SAndroid Build Coastguard Worker /* Write an element named "NAME_1" as child of HEADER. */
430*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "NAME_1",
431*7c568831SAndroid Build Coastguard Worker BAD_CAST "Mueller");
432*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
433*7c568831SAndroid Build Coastguard Worker printf
434*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteElement\n");
435*7c568831SAndroid Build Coastguard Worker return;
436*7c568831SAndroid Build Coastguard Worker }
437*7c568831SAndroid Build Coastguard Worker
438*7c568831SAndroid Build Coastguard Worker /* Write an element named "NAME_2" as child of HEADER. */
439*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "NAME_2",
440*7c568831SAndroid Build Coastguard Worker BAD_CAST "Joerg");
441*7c568831SAndroid Build Coastguard Worker
442*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
443*7c568831SAndroid Build Coastguard Worker printf
444*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteElement\n");
445*7c568831SAndroid Build Coastguard Worker return;
446*7c568831SAndroid Build Coastguard Worker }
447*7c568831SAndroid Build Coastguard Worker
448*7c568831SAndroid Build Coastguard Worker /* Close the element named HEADER. */
449*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
450*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
451*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterMemory: Error at xmlTextWriterEndElement\n");
452*7c568831SAndroid Build Coastguard Worker return;
453*7c568831SAndroid Build Coastguard Worker }
454*7c568831SAndroid Build Coastguard Worker
455*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRIES" as child of ORDER. */
456*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRIES");
457*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
458*7c568831SAndroid Build Coastguard Worker printf
459*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterStartElement\n");
460*7c568831SAndroid Build Coastguard Worker return;
461*7c568831SAndroid Build Coastguard Worker }
462*7c568831SAndroid Build Coastguard Worker
463*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRY" as child of ENTRIES. */
464*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRY");
465*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
466*7c568831SAndroid Build Coastguard Worker printf
467*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterStartElement\n");
468*7c568831SAndroid Build Coastguard Worker return;
469*7c568831SAndroid Build Coastguard Worker }
470*7c568831SAndroid Build Coastguard Worker
471*7c568831SAndroid Build Coastguard Worker /* Write an element named "ARTICLE" as child of ENTRY. */
472*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "ARTICLE",
473*7c568831SAndroid Build Coastguard Worker BAD_CAST "<Test>");
474*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
475*7c568831SAndroid Build Coastguard Worker printf
476*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteElement\n");
477*7c568831SAndroid Build Coastguard Worker return;
478*7c568831SAndroid Build Coastguard Worker }
479*7c568831SAndroid Build Coastguard Worker
480*7c568831SAndroid Build Coastguard Worker /* Write an element named "ENTRY_NO" as child of ENTRY. */
481*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "ENTRY_NO", "%d",
482*7c568831SAndroid Build Coastguard Worker 10);
483*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
484*7c568831SAndroid Build Coastguard Worker printf
485*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteFormatElement\n");
486*7c568831SAndroid Build Coastguard Worker return;
487*7c568831SAndroid Build Coastguard Worker }
488*7c568831SAndroid Build Coastguard Worker
489*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRY. */
490*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
491*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
492*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterMemory: Error at xmlTextWriterEndElement\n");
493*7c568831SAndroid Build Coastguard Worker return;
494*7c568831SAndroid Build Coastguard Worker }
495*7c568831SAndroid Build Coastguard Worker
496*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRY" as child of ENTRIES. */
497*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRY");
498*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
499*7c568831SAndroid Build Coastguard Worker printf
500*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterStartElement\n");
501*7c568831SAndroid Build Coastguard Worker return;
502*7c568831SAndroid Build Coastguard Worker }
503*7c568831SAndroid Build Coastguard Worker
504*7c568831SAndroid Build Coastguard Worker /* Write an element named "ARTICLE" as child of ENTRY. */
505*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "ARTICLE",
506*7c568831SAndroid Build Coastguard Worker BAD_CAST "<Test 2>");
507*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
508*7c568831SAndroid Build Coastguard Worker printf
509*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteElement\n");
510*7c568831SAndroid Build Coastguard Worker return;
511*7c568831SAndroid Build Coastguard Worker }
512*7c568831SAndroid Build Coastguard Worker
513*7c568831SAndroid Build Coastguard Worker /* Write an element named "ENTRY_NO" as child of ENTRY. */
514*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "ENTRY_NO", "%d",
515*7c568831SAndroid Build Coastguard Worker 20);
516*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
517*7c568831SAndroid Build Coastguard Worker printf
518*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteFormatElement\n");
519*7c568831SAndroid Build Coastguard Worker return;
520*7c568831SAndroid Build Coastguard Worker }
521*7c568831SAndroid Build Coastguard Worker
522*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRY. */
523*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
524*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
525*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterMemory: Error at xmlTextWriterEndElement\n");
526*7c568831SAndroid Build Coastguard Worker return;
527*7c568831SAndroid Build Coastguard Worker }
528*7c568831SAndroid Build Coastguard Worker
529*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRIES. */
530*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
531*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
532*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterMemory: Error at xmlTextWriterEndElement\n");
533*7c568831SAndroid Build Coastguard Worker return;
534*7c568831SAndroid Build Coastguard Worker }
535*7c568831SAndroid Build Coastguard Worker
536*7c568831SAndroid Build Coastguard Worker /* Start an element named "FOOTER" as child of ORDER. */
537*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "FOOTER");
538*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
539*7c568831SAndroid Build Coastguard Worker printf
540*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterStartElement\n");
541*7c568831SAndroid Build Coastguard Worker return;
542*7c568831SAndroid Build Coastguard Worker }
543*7c568831SAndroid Build Coastguard Worker
544*7c568831SAndroid Build Coastguard Worker /* Write an element named "TEXT" as child of FOOTER. */
545*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "TEXT",
546*7c568831SAndroid Build Coastguard Worker BAD_CAST "This is a text.");
547*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
548*7c568831SAndroid Build Coastguard Worker printf
549*7c568831SAndroid Build Coastguard Worker ("testXmlwriterMemory: Error at xmlTextWriterWriteElement\n");
550*7c568831SAndroid Build Coastguard Worker return;
551*7c568831SAndroid Build Coastguard Worker }
552*7c568831SAndroid Build Coastguard Worker
553*7c568831SAndroid Build Coastguard Worker /* Close the element named FOOTER. */
554*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
555*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
556*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterMemory: Error at xmlTextWriterEndElement\n");
557*7c568831SAndroid Build Coastguard Worker return;
558*7c568831SAndroid Build Coastguard Worker }
559*7c568831SAndroid Build Coastguard Worker
560*7c568831SAndroid Build Coastguard Worker /* Here we could close the elements ORDER and EXAMPLE using the
561*7c568831SAndroid Build Coastguard Worker * function xmlTextWriterEndElement, but since we do not want to
562*7c568831SAndroid Build Coastguard Worker * write any other elements, we simply call xmlTextWriterEndDocument,
563*7c568831SAndroid Build Coastguard Worker * which will do all the work. */
564*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndDocument(writer);
565*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
566*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterMemory: Error at xmlTextWriterEndDocument\n");
567*7c568831SAndroid Build Coastguard Worker return;
568*7c568831SAndroid Build Coastguard Worker }
569*7c568831SAndroid Build Coastguard Worker
570*7c568831SAndroid Build Coastguard Worker xmlFreeTextWriter(writer);
571*7c568831SAndroid Build Coastguard Worker
572*7c568831SAndroid Build Coastguard Worker xmlBufferFree(buf);
573*7c568831SAndroid Build Coastguard Worker }
574*7c568831SAndroid Build Coastguard Worker
575*7c568831SAndroid Build Coastguard Worker /**
576*7c568831SAndroid Build Coastguard Worker * testXmlwriterDoc:
577*7c568831SAndroid Build Coastguard Worker * @file: the output file
578*7c568831SAndroid Build Coastguard Worker *
579*7c568831SAndroid Build Coastguard Worker * test the xmlWriter interface when creating a new document
580*7c568831SAndroid Build Coastguard Worker */
581*7c568831SAndroid Build Coastguard Worker void
testXmlwriterDoc(void)582*7c568831SAndroid Build Coastguard Worker testXmlwriterDoc(void)
583*7c568831SAndroid Build Coastguard Worker {
584*7c568831SAndroid Build Coastguard Worker int rc;
585*7c568831SAndroid Build Coastguard Worker xmlTextWriterPtr writer;
586*7c568831SAndroid Build Coastguard Worker xmlDocPtr doc;
587*7c568831SAndroid Build Coastguard Worker
588*7c568831SAndroid Build Coastguard Worker
589*7c568831SAndroid Build Coastguard Worker /* Create a new XmlWriter for DOM, with no compression. */
590*7c568831SAndroid Build Coastguard Worker writer = xmlNewTextWriterDoc(&doc, 0);
591*7c568831SAndroid Build Coastguard Worker if (writer == NULL) {
592*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error creating the xml writer\n");
593*7c568831SAndroid Build Coastguard Worker return;
594*7c568831SAndroid Build Coastguard Worker }
595*7c568831SAndroid Build Coastguard Worker
596*7c568831SAndroid Build Coastguard Worker /* Start the document with the xml default for the version,
597*7c568831SAndroid Build Coastguard Worker * encoding ISO 8859-1 and the default for the standalone
598*7c568831SAndroid Build Coastguard Worker * declaration. */
599*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartDocument(writer, NULL, MY_ENCODING, NULL);
600*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
601*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterStartDocument\n");
602*7c568831SAndroid Build Coastguard Worker return;
603*7c568831SAndroid Build Coastguard Worker }
604*7c568831SAndroid Build Coastguard Worker
605*7c568831SAndroid Build Coastguard Worker /* Start an element named "EXAMPLE". Since this is the first
606*7c568831SAndroid Build Coastguard Worker * element, this will be the root element of the document. */
607*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "EXAMPLE");
608*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
609*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterStartElement\n");
610*7c568831SAndroid Build Coastguard Worker return;
611*7c568831SAndroid Build Coastguard Worker }
612*7c568831SAndroid Build Coastguard Worker
613*7c568831SAndroid Build Coastguard Worker /* Write a comment as child of EXAMPLE. */
614*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteComment(writer, BAD_CAST "This is a comment");
615*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
616*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterWriteComment\n");
617*7c568831SAndroid Build Coastguard Worker return;
618*7c568831SAndroid Build Coastguard Worker }
619*7c568831SAndroid Build Coastguard Worker
620*7c568831SAndroid Build Coastguard Worker /* Start an element named "ORDER" as child of EXAMPLE. */
621*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ORDER");
622*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
623*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterStartElement\n");
624*7c568831SAndroid Build Coastguard Worker return;
625*7c568831SAndroid Build Coastguard Worker }
626*7c568831SAndroid Build Coastguard Worker
627*7c568831SAndroid Build Coastguard Worker /* Add an attribute with name "version" and value "1.0" to ORDER. */
628*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteAttribute(writer, BAD_CAST "version",
629*7c568831SAndroid Build Coastguard Worker BAD_CAST "1.0");
630*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
631*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterWriteAttribute\n");
632*7c568831SAndroid Build Coastguard Worker return;
633*7c568831SAndroid Build Coastguard Worker }
634*7c568831SAndroid Build Coastguard Worker
635*7c568831SAndroid Build Coastguard Worker /* Add an attribute with name "xml:lang" and value "de" to ORDER. */
636*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteAttribute(writer, BAD_CAST "xml:lang",
637*7c568831SAndroid Build Coastguard Worker BAD_CAST "de");
638*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
639*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterWriteAttribute\n");
640*7c568831SAndroid Build Coastguard Worker return;
641*7c568831SAndroid Build Coastguard Worker }
642*7c568831SAndroid Build Coastguard Worker
643*7c568831SAndroid Build Coastguard Worker /* Write a comment as child of ORDER */
644*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteComment(writer, BAD_CAST "This is another comment");
645*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
646*7c568831SAndroid Build Coastguard Worker printf
647*7c568831SAndroid Build Coastguard Worker ("testXmlwriterDoc: Error at xmlTextWriterWriteFormatComment\n");
648*7c568831SAndroid Build Coastguard Worker return;
649*7c568831SAndroid Build Coastguard Worker }
650*7c568831SAndroid Build Coastguard Worker
651*7c568831SAndroid Build Coastguard Worker /* Start an element named "HEADER" as child of ORDER. */
652*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "HEADER");
653*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
654*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterStartElement\n");
655*7c568831SAndroid Build Coastguard Worker return;
656*7c568831SAndroid Build Coastguard Worker }
657*7c568831SAndroid Build Coastguard Worker
658*7c568831SAndroid Build Coastguard Worker /* Write an element named "X_ORDER_ID" as child of HEADER. */
659*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "X_ORDER_ID",
660*7c568831SAndroid Build Coastguard Worker "%010d", 53535);
661*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
662*7c568831SAndroid Build Coastguard Worker printf
663*7c568831SAndroid Build Coastguard Worker ("testXmlwriterDoc: Error at xmlTextWriterWriteFormatElement\n");
664*7c568831SAndroid Build Coastguard Worker return;
665*7c568831SAndroid Build Coastguard Worker }
666*7c568831SAndroid Build Coastguard Worker
667*7c568831SAndroid Build Coastguard Worker /* Write an element named "CUSTOMER_ID" as child of HEADER. */
668*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "CUSTOMER_ID",
669*7c568831SAndroid Build Coastguard Worker "%d", 1010);
670*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
671*7c568831SAndroid Build Coastguard Worker printf
672*7c568831SAndroid Build Coastguard Worker ("testXmlwriterDoc: Error at xmlTextWriterWriteFormatElement\n");
673*7c568831SAndroid Build Coastguard Worker return;
674*7c568831SAndroid Build Coastguard Worker }
675*7c568831SAndroid Build Coastguard Worker
676*7c568831SAndroid Build Coastguard Worker /* Write an element named "NAME_1" as child of HEADER. */
677*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "NAME_1",
678*7c568831SAndroid Build Coastguard Worker BAD_CAST "Mueller");
679*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
680*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterWriteElement\n");
681*7c568831SAndroid Build Coastguard Worker return;
682*7c568831SAndroid Build Coastguard Worker }
683*7c568831SAndroid Build Coastguard Worker
684*7c568831SAndroid Build Coastguard Worker /* Write an element named "NAME_2" as child of HEADER. */
685*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "NAME_2",
686*7c568831SAndroid Build Coastguard Worker BAD_CAST "Joerg");
687*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
688*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterWriteElement\n");
689*7c568831SAndroid Build Coastguard Worker return;
690*7c568831SAndroid Build Coastguard Worker }
691*7c568831SAndroid Build Coastguard Worker
692*7c568831SAndroid Build Coastguard Worker /* Close the element named HEADER. */
693*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
694*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
695*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterEndElement\n");
696*7c568831SAndroid Build Coastguard Worker return;
697*7c568831SAndroid Build Coastguard Worker }
698*7c568831SAndroid Build Coastguard Worker
699*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRIES" as child of ORDER. */
700*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRIES");
701*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
702*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterStartElement\n");
703*7c568831SAndroid Build Coastguard Worker return;
704*7c568831SAndroid Build Coastguard Worker }
705*7c568831SAndroid Build Coastguard Worker
706*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRY" as child of ENTRIES. */
707*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRY");
708*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
709*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterStartElement\n");
710*7c568831SAndroid Build Coastguard Worker return;
711*7c568831SAndroid Build Coastguard Worker }
712*7c568831SAndroid Build Coastguard Worker
713*7c568831SAndroid Build Coastguard Worker /* Write an element named "ARTICLE" as child of ENTRY. */
714*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "ARTICLE",
715*7c568831SAndroid Build Coastguard Worker BAD_CAST "<Test>");
716*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
717*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterWriteElement\n");
718*7c568831SAndroid Build Coastguard Worker return;
719*7c568831SAndroid Build Coastguard Worker }
720*7c568831SAndroid Build Coastguard Worker
721*7c568831SAndroid Build Coastguard Worker /* Write an element named "ENTRY_NO" as child of ENTRY. */
722*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "ENTRY_NO", "%d",
723*7c568831SAndroid Build Coastguard Worker 10);
724*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
725*7c568831SAndroid Build Coastguard Worker printf
726*7c568831SAndroid Build Coastguard Worker ("testXmlwriterDoc: Error at xmlTextWriterWriteFormatElement\n");
727*7c568831SAndroid Build Coastguard Worker return;
728*7c568831SAndroid Build Coastguard Worker }
729*7c568831SAndroid Build Coastguard Worker
730*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRY. */
731*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
732*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
733*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterEndElement\n");
734*7c568831SAndroid Build Coastguard Worker return;
735*7c568831SAndroid Build Coastguard Worker }
736*7c568831SAndroid Build Coastguard Worker
737*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRY" as child of ENTRIES. */
738*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRY");
739*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
740*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterStartElement\n");
741*7c568831SAndroid Build Coastguard Worker return;
742*7c568831SAndroid Build Coastguard Worker }
743*7c568831SAndroid Build Coastguard Worker
744*7c568831SAndroid Build Coastguard Worker /* Write an element named "ARTICLE" as child of ENTRY. */
745*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "ARTICLE",
746*7c568831SAndroid Build Coastguard Worker BAD_CAST "<Test 2>");
747*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
748*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterWriteElement\n");
749*7c568831SAndroid Build Coastguard Worker return;
750*7c568831SAndroid Build Coastguard Worker }
751*7c568831SAndroid Build Coastguard Worker
752*7c568831SAndroid Build Coastguard Worker /* Write an element named "ENTRY_NO" as child of ENTRY. */
753*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "ENTRY_NO", "%d",
754*7c568831SAndroid Build Coastguard Worker 20);
755*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
756*7c568831SAndroid Build Coastguard Worker printf
757*7c568831SAndroid Build Coastguard Worker ("testXmlwriterDoc: Error at xmlTextWriterWriteFormatElement\n");
758*7c568831SAndroid Build Coastguard Worker return;
759*7c568831SAndroid Build Coastguard Worker }
760*7c568831SAndroid Build Coastguard Worker
761*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRY. */
762*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
763*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
764*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterEndElement\n");
765*7c568831SAndroid Build Coastguard Worker return;
766*7c568831SAndroid Build Coastguard Worker }
767*7c568831SAndroid Build Coastguard Worker
768*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRIES. */
769*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
770*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
771*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterEndElement\n");
772*7c568831SAndroid Build Coastguard Worker return;
773*7c568831SAndroid Build Coastguard Worker }
774*7c568831SAndroid Build Coastguard Worker
775*7c568831SAndroid Build Coastguard Worker /* Start an element named "FOOTER" as child of ORDER. */
776*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "FOOTER");
777*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
778*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterStartElement\n");
779*7c568831SAndroid Build Coastguard Worker return;
780*7c568831SAndroid Build Coastguard Worker }
781*7c568831SAndroid Build Coastguard Worker
782*7c568831SAndroid Build Coastguard Worker /* Write an element named "TEXT" as child of FOOTER. */
783*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "TEXT",
784*7c568831SAndroid Build Coastguard Worker BAD_CAST "This is a text.");
785*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
786*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterWriteElement\n");
787*7c568831SAndroid Build Coastguard Worker return;
788*7c568831SAndroid Build Coastguard Worker }
789*7c568831SAndroid Build Coastguard Worker
790*7c568831SAndroid Build Coastguard Worker /* Close the element named FOOTER. */
791*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
792*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
793*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterEndElement\n");
794*7c568831SAndroid Build Coastguard Worker return;
795*7c568831SAndroid Build Coastguard Worker }
796*7c568831SAndroid Build Coastguard Worker
797*7c568831SAndroid Build Coastguard Worker /* Here we could close the elements ORDER and EXAMPLE using the
798*7c568831SAndroid Build Coastguard Worker * function xmlTextWriterEndElement, but since we do not want to
799*7c568831SAndroid Build Coastguard Worker * write any other elements, we simply call xmlTextWriterEndDocument,
800*7c568831SAndroid Build Coastguard Worker * which will do all the work. */
801*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndDocument(writer);
802*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
803*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterDoc: Error at xmlTextWriterEndDocument\n");
804*7c568831SAndroid Build Coastguard Worker return;
805*7c568831SAndroid Build Coastguard Worker }
806*7c568831SAndroid Build Coastguard Worker
807*7c568831SAndroid Build Coastguard Worker xmlFreeTextWriter(writer);
808*7c568831SAndroid Build Coastguard Worker
809*7c568831SAndroid Build Coastguard Worker xmlFreeDoc(doc);
810*7c568831SAndroid Build Coastguard Worker }
811*7c568831SAndroid Build Coastguard Worker
812*7c568831SAndroid Build Coastguard Worker /**
813*7c568831SAndroid Build Coastguard Worker * testXmlwriterTree:
814*7c568831SAndroid Build Coastguard Worker * @file: the output file
815*7c568831SAndroid Build Coastguard Worker *
816*7c568831SAndroid Build Coastguard Worker * test the xmlWriter interface when writing to a subtree
817*7c568831SAndroid Build Coastguard Worker */
818*7c568831SAndroid Build Coastguard Worker void
testXmlwriterTree(void)819*7c568831SAndroid Build Coastguard Worker testXmlwriterTree(void)
820*7c568831SAndroid Build Coastguard Worker {
821*7c568831SAndroid Build Coastguard Worker int rc;
822*7c568831SAndroid Build Coastguard Worker xmlTextWriterPtr writer;
823*7c568831SAndroid Build Coastguard Worker xmlDocPtr doc;
824*7c568831SAndroid Build Coastguard Worker xmlNodePtr node;
825*7c568831SAndroid Build Coastguard Worker
826*7c568831SAndroid Build Coastguard Worker /* Create a new XML DOM tree, to which the XML document will be
827*7c568831SAndroid Build Coastguard Worker * written */
828*7c568831SAndroid Build Coastguard Worker doc = xmlNewDoc(BAD_CAST XML_DEFAULT_VERSION);
829*7c568831SAndroid Build Coastguard Worker if (doc == NULL) {
830*7c568831SAndroid Build Coastguard Worker printf
831*7c568831SAndroid Build Coastguard Worker ("testXmlwriterTree: Error creating the xml document tree\n");
832*7c568831SAndroid Build Coastguard Worker return;
833*7c568831SAndroid Build Coastguard Worker }
834*7c568831SAndroid Build Coastguard Worker
835*7c568831SAndroid Build Coastguard Worker /* Create a new XML node, to which the XML document will be
836*7c568831SAndroid Build Coastguard Worker * appended */
837*7c568831SAndroid Build Coastguard Worker node = xmlNewDocNode(doc, NULL, BAD_CAST "EXAMPLE", NULL);
838*7c568831SAndroid Build Coastguard Worker if (node == NULL) {
839*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error creating the xml node\n");
840*7c568831SAndroid Build Coastguard Worker return;
841*7c568831SAndroid Build Coastguard Worker }
842*7c568831SAndroid Build Coastguard Worker
843*7c568831SAndroid Build Coastguard Worker /* Make ELEMENT the root node of the tree */
844*7c568831SAndroid Build Coastguard Worker xmlDocSetRootElement(doc, node);
845*7c568831SAndroid Build Coastguard Worker
846*7c568831SAndroid Build Coastguard Worker /* Create a new XmlWriter for DOM tree, with no compression. */
847*7c568831SAndroid Build Coastguard Worker writer = xmlNewTextWriterTree(doc, node, 0);
848*7c568831SAndroid Build Coastguard Worker if (writer == NULL) {
849*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error creating the xml writer\n");
850*7c568831SAndroid Build Coastguard Worker return;
851*7c568831SAndroid Build Coastguard Worker }
852*7c568831SAndroid Build Coastguard Worker
853*7c568831SAndroid Build Coastguard Worker /* Start the document with the xml default for the version,
854*7c568831SAndroid Build Coastguard Worker * encoding ISO 8859-1 and the default for the standalone
855*7c568831SAndroid Build Coastguard Worker * declaration. */
856*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartDocument(writer, NULL, MY_ENCODING, NULL);
857*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
858*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterStartDocument\n");
859*7c568831SAndroid Build Coastguard Worker return;
860*7c568831SAndroid Build Coastguard Worker }
861*7c568831SAndroid Build Coastguard Worker
862*7c568831SAndroid Build Coastguard Worker /* Write a comment as child of EXAMPLE. */
863*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteComment(writer, BAD_CAST "This is a comment");
864*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
865*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterWriteComment\n");
866*7c568831SAndroid Build Coastguard Worker return;
867*7c568831SAndroid Build Coastguard Worker }
868*7c568831SAndroid Build Coastguard Worker
869*7c568831SAndroid Build Coastguard Worker /* Start an element named "ORDER" as child of EXAMPLE. */
870*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ORDER");
871*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
872*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterStartElement\n");
873*7c568831SAndroid Build Coastguard Worker return;
874*7c568831SAndroid Build Coastguard Worker }
875*7c568831SAndroid Build Coastguard Worker
876*7c568831SAndroid Build Coastguard Worker /* Add an attribute with name "version" and value "1.0" to ORDER. */
877*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteAttribute(writer, BAD_CAST "version",
878*7c568831SAndroid Build Coastguard Worker BAD_CAST "1.0");
879*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
880*7c568831SAndroid Build Coastguard Worker printf
881*7c568831SAndroid Build Coastguard Worker ("testXmlwriterTree: Error at xmlTextWriterWriteAttribute\n");
882*7c568831SAndroid Build Coastguard Worker return;
883*7c568831SAndroid Build Coastguard Worker }
884*7c568831SAndroid Build Coastguard Worker
885*7c568831SAndroid Build Coastguard Worker /* Add an attribute with name "xml:lang" and value "de" to ORDER. */
886*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteAttribute(writer, BAD_CAST "xml:lang",
887*7c568831SAndroid Build Coastguard Worker BAD_CAST "de");
888*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
889*7c568831SAndroid Build Coastguard Worker printf
890*7c568831SAndroid Build Coastguard Worker ("testXmlwriterTree: Error at xmlTextWriterWriteAttribute\n");
891*7c568831SAndroid Build Coastguard Worker return;
892*7c568831SAndroid Build Coastguard Worker }
893*7c568831SAndroid Build Coastguard Worker
894*7c568831SAndroid Build Coastguard Worker /* Write a comment as child of ORDER */
895*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteComment(writer, BAD_CAST "This is another comment");
896*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
897*7c568831SAndroid Build Coastguard Worker printf
898*7c568831SAndroid Build Coastguard Worker ("testXmlwriterTree: Error at xmlTextWriterWriteFormatComment\n");
899*7c568831SAndroid Build Coastguard Worker return;
900*7c568831SAndroid Build Coastguard Worker }
901*7c568831SAndroid Build Coastguard Worker
902*7c568831SAndroid Build Coastguard Worker /* Start an element named "HEADER" as child of ORDER. */
903*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "HEADER");
904*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
905*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterStartElement\n");
906*7c568831SAndroid Build Coastguard Worker return;
907*7c568831SAndroid Build Coastguard Worker }
908*7c568831SAndroid Build Coastguard Worker
909*7c568831SAndroid Build Coastguard Worker /* Write an element named "X_ORDER_ID" as child of HEADER. */
910*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "X_ORDER_ID",
911*7c568831SAndroid Build Coastguard Worker "%010d", 53535);
912*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
913*7c568831SAndroid Build Coastguard Worker printf
914*7c568831SAndroid Build Coastguard Worker ("testXmlwriterTree: Error at xmlTextWriterWriteFormatElement\n");
915*7c568831SAndroid Build Coastguard Worker return;
916*7c568831SAndroid Build Coastguard Worker }
917*7c568831SAndroid Build Coastguard Worker
918*7c568831SAndroid Build Coastguard Worker /* Write an element named "CUSTOMER_ID" as child of HEADER. */
919*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "CUSTOMER_ID",
920*7c568831SAndroid Build Coastguard Worker "%d", 1010);
921*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
922*7c568831SAndroid Build Coastguard Worker printf
923*7c568831SAndroid Build Coastguard Worker ("testXmlwriterTree: Error at xmlTextWriterWriteFormatElement\n");
924*7c568831SAndroid Build Coastguard Worker return;
925*7c568831SAndroid Build Coastguard Worker }
926*7c568831SAndroid Build Coastguard Worker
927*7c568831SAndroid Build Coastguard Worker /* Write an element named "NAME_1" as child of HEADER. */
928*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "NAME_1",
929*7c568831SAndroid Build Coastguard Worker BAD_CAST "Mueller");
930*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
931*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterWriteElement\n");
932*7c568831SAndroid Build Coastguard Worker return;
933*7c568831SAndroid Build Coastguard Worker }
934*7c568831SAndroid Build Coastguard Worker
935*7c568831SAndroid Build Coastguard Worker /* Write an element named "NAME_2" as child of HEADER. */
936*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "NAME_2",
937*7c568831SAndroid Build Coastguard Worker BAD_CAST "Joerg");
938*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
939*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterWriteElement\n");
940*7c568831SAndroid Build Coastguard Worker return;
941*7c568831SAndroid Build Coastguard Worker }
942*7c568831SAndroid Build Coastguard Worker
943*7c568831SAndroid Build Coastguard Worker /* Close the element named HEADER. */
944*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
945*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
946*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterEndElement\n");
947*7c568831SAndroid Build Coastguard Worker return;
948*7c568831SAndroid Build Coastguard Worker }
949*7c568831SAndroid Build Coastguard Worker
950*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRIES" as child of ORDER. */
951*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRIES");
952*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
953*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterStartElement\n");
954*7c568831SAndroid Build Coastguard Worker return;
955*7c568831SAndroid Build Coastguard Worker }
956*7c568831SAndroid Build Coastguard Worker
957*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRY" as child of ENTRIES. */
958*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRY");
959*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
960*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterStartElement\n");
961*7c568831SAndroid Build Coastguard Worker return;
962*7c568831SAndroid Build Coastguard Worker }
963*7c568831SAndroid Build Coastguard Worker
964*7c568831SAndroid Build Coastguard Worker /* Write an element named "ARTICLE" as child of ENTRY. */
965*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "ARTICLE",
966*7c568831SAndroid Build Coastguard Worker BAD_CAST "<Test>");
967*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
968*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterWriteElement\n");
969*7c568831SAndroid Build Coastguard Worker return;
970*7c568831SAndroid Build Coastguard Worker }
971*7c568831SAndroid Build Coastguard Worker
972*7c568831SAndroid Build Coastguard Worker /* Write an element named "ENTRY_NO" as child of ENTRY. */
973*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "ENTRY_NO", "%d",
974*7c568831SAndroid Build Coastguard Worker 10);
975*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
976*7c568831SAndroid Build Coastguard Worker printf
977*7c568831SAndroid Build Coastguard Worker ("testXmlwriterTree: Error at xmlTextWriterWriteFormatElement\n");
978*7c568831SAndroid Build Coastguard Worker return;
979*7c568831SAndroid Build Coastguard Worker }
980*7c568831SAndroid Build Coastguard Worker
981*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRY. */
982*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
983*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
984*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterEndElement\n");
985*7c568831SAndroid Build Coastguard Worker return;
986*7c568831SAndroid Build Coastguard Worker }
987*7c568831SAndroid Build Coastguard Worker
988*7c568831SAndroid Build Coastguard Worker /* Start an element named "ENTRY" as child of ENTRIES. */
989*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "ENTRY");
990*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
991*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterStartElement\n");
992*7c568831SAndroid Build Coastguard Worker return;
993*7c568831SAndroid Build Coastguard Worker }
994*7c568831SAndroid Build Coastguard Worker
995*7c568831SAndroid Build Coastguard Worker /* Write an element named "ARTICLE" as child of ENTRY. */
996*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "ARTICLE",
997*7c568831SAndroid Build Coastguard Worker BAD_CAST "<Test 2>");
998*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
999*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterWriteElement\n");
1000*7c568831SAndroid Build Coastguard Worker return;
1001*7c568831SAndroid Build Coastguard Worker }
1002*7c568831SAndroid Build Coastguard Worker
1003*7c568831SAndroid Build Coastguard Worker /* Write an element named "ENTRY_NO" as child of ENTRY. */
1004*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "ENTRY_NO", "%d",
1005*7c568831SAndroid Build Coastguard Worker 20);
1006*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
1007*7c568831SAndroid Build Coastguard Worker printf
1008*7c568831SAndroid Build Coastguard Worker ("testXmlwriterTree: Error at xmlTextWriterWriteFormatElement\n");
1009*7c568831SAndroid Build Coastguard Worker return;
1010*7c568831SAndroid Build Coastguard Worker }
1011*7c568831SAndroid Build Coastguard Worker
1012*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRY. */
1013*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
1014*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
1015*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterEndElement\n");
1016*7c568831SAndroid Build Coastguard Worker return;
1017*7c568831SAndroid Build Coastguard Worker }
1018*7c568831SAndroid Build Coastguard Worker
1019*7c568831SAndroid Build Coastguard Worker /* Close the element named ENTRIES. */
1020*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
1021*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
1022*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterEndElement\n");
1023*7c568831SAndroid Build Coastguard Worker return;
1024*7c568831SAndroid Build Coastguard Worker }
1025*7c568831SAndroid Build Coastguard Worker
1026*7c568831SAndroid Build Coastguard Worker /* Start an element named "FOOTER" as child of ORDER. */
1027*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterStartElement(writer, BAD_CAST "FOOTER");
1028*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
1029*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterStartElement\n");
1030*7c568831SAndroid Build Coastguard Worker return;
1031*7c568831SAndroid Build Coastguard Worker }
1032*7c568831SAndroid Build Coastguard Worker
1033*7c568831SAndroid Build Coastguard Worker /* Write an element named "TEXT" as child of FOOTER. */
1034*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterWriteElement(writer, BAD_CAST "TEXT",
1035*7c568831SAndroid Build Coastguard Worker BAD_CAST "This is a text.");
1036*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
1037*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterWriteElement\n");
1038*7c568831SAndroid Build Coastguard Worker return;
1039*7c568831SAndroid Build Coastguard Worker }
1040*7c568831SAndroid Build Coastguard Worker
1041*7c568831SAndroid Build Coastguard Worker /* Close the element named FOOTER. */
1042*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndElement(writer);
1043*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
1044*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterEndElement\n");
1045*7c568831SAndroid Build Coastguard Worker return;
1046*7c568831SAndroid Build Coastguard Worker }
1047*7c568831SAndroid Build Coastguard Worker
1048*7c568831SAndroid Build Coastguard Worker /* Here we could close the elements ORDER and EXAMPLE using the
1049*7c568831SAndroid Build Coastguard Worker * function xmlTextWriterEndElement, but since we do not want to
1050*7c568831SAndroid Build Coastguard Worker * write any other elements, we simply call xmlTextWriterEndDocument,
1051*7c568831SAndroid Build Coastguard Worker * which will do all the work. */
1052*7c568831SAndroid Build Coastguard Worker rc = xmlTextWriterEndDocument(writer);
1053*7c568831SAndroid Build Coastguard Worker if (rc < 0) {
1054*7c568831SAndroid Build Coastguard Worker printf("testXmlwriterTree: Error at xmlTextWriterEndDocument\n");
1055*7c568831SAndroid Build Coastguard Worker return;
1056*7c568831SAndroid Build Coastguard Worker }
1057*7c568831SAndroid Build Coastguard Worker
1058*7c568831SAndroid Build Coastguard Worker xmlFreeTextWriter(writer);
1059*7c568831SAndroid Build Coastguard Worker
1060*7c568831SAndroid Build Coastguard Worker xmlFreeDoc(doc);
1061*7c568831SAndroid Build Coastguard Worker }
1062*7c568831SAndroid Build Coastguard Worker
1063*7c568831SAndroid Build Coastguard Worker #else
main(void)1064*7c568831SAndroid Build Coastguard Worker int main(void) {
1065*7c568831SAndroid Build Coastguard Worker fprintf(stderr, "Writer or output support not compiled in\n");
1066*7c568831SAndroid Build Coastguard Worker return 0;
1067*7c568831SAndroid Build Coastguard Worker }
1068*7c568831SAndroid Build Coastguard Worker #endif
1069