xref: /aosp_15_r20/external/libxml2/doc/devhelp/libxml2-xmlsave.html (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>xmlsave: the XML document serializer</title>
5<meta name="generator" content="Libxml2 devhelp stylesheet">
6<link rel="start" href="index.html" title="libxml2 Reference Manual">
7<link rel="up" href="general.html" title="API">
8<link rel="stylesheet" href="style.css" type="text/css">
9<link rel="chapter" href="general.html" title="API">
10</head>
11<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
12<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
13<td><a accesskey="p" href="libxml2-xmlregexp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
14<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
15<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
16<td><a accesskey="n" href="libxml2-xmlschemas.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
17<th width="100%" align="center">libxml2 Reference Manual</th>
18</tr></table>
19<h2><span class="refentrytitle">xmlsave</span></h2>
20<p>xmlsave - the XML document serializer</p>
21<p>API to save document or subtree of document </p>
22<p>Author(s): Daniel Veillard </p>
23<div class="refsynopsisdiv">
24<h2>Synopsis</h2>
25<pre class="synopsis">typedef struct _xmlSaveCtxt <a href="#xmlSaveCtxt">xmlSaveCtxt</a>;
26typedef <a href="libxml2-xmlsave.html#xmlSaveCtxt">xmlSaveCtxt</a> * <a href="#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>;
27typedef enum <a href="#xmlSaveOption">xmlSaveOption</a>;
28int	<a href="#xmlSaveClose">xmlSaveClose</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt);
29long	<a href="#xmlSaveDoc">xmlSaveDoc</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
30int	<a href="#xmlSaveFinish">xmlSaveFinish</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt);
31int	<a href="#xmlSaveFlush">xmlSaveFlush</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt);
32int	<a href="#xmlSaveSetAttrEscape">xmlSaveSetAttrEscape</a>		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escape);
33int	<a href="#xmlSaveSetEscape">xmlSaveSetEscape</a>		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escape);
34<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	<a href="#xmlSaveToBuffer">xmlSaveToBuffer</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br>					 const char * encoding, <br>					 int options);
35<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	<a href="#xmlSaveToFd">xmlSaveToFd</a>		(int fd, <br>					 const char * encoding, <br>					 int options);
36<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	<a href="#xmlSaveToFilename">xmlSaveToFilename</a>	(const char * filename, <br>					 const char * encoding, <br>					 int options);
37<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	<a href="#xmlSaveToIO">xmlSaveToIO</a>		(<a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> iowrite, <br>					 <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * encoding, <br>					 int options);
38long	<a href="#xmlSaveTree">xmlSaveTree</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
39int	<a href="#xmlThrDefIndentTreeOutput">xmlThrDefIndentTreeOutput</a>	(int v);
40int	<a href="#xmlThrDefSaveNoEmptyTags">xmlThrDefSaveNoEmptyTags</a>	(int v);
41const char *	<a href="#xmlThrDefTreeIndentString">xmlThrDefTreeIndentString</a>	(const char * v);
42</pre>
43</div>
44<div class="refsect1" lang="en"><h2>Description</h2></div>
45<div class="refsect1" lang="en">
46<h2>Details</h2>
47<div class="refsect2" lang="en">
48<div class="refsect2" lang="en">
49<h3>
50<a name="xmlSaveCtxt">Structure </a>xmlSaveCtxt</h3>
51<pre class="programlisting">struct _xmlSaveCtxt {
52The content of this structure is not made public by the API.
53} xmlSaveCtxt;
54</pre>
55<p></p>
56</div>
57<hr>
58<div class="refsect2" lang="en">
59<h3>
60<a name="xmlSaveCtxtPtr">Typedef </a>xmlSaveCtxtPtr</h3>
61<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxt">xmlSaveCtxt</a> * xmlSaveCtxtPtr;
62</pre>
63<p></p>
64</div>
65<hr>
66<div class="refsect2" lang="en">
67<h3>
68<a name="xmlSaveOption">Enum </a>xmlSaveOption</h3>
69<pre class="programlisting">enum <a href="#xmlSaveOption">xmlSaveOption</a> {
70    <a name="XML_SAVE_FORMAT">XML_SAVE_FORMAT</a> = 1 /* format save output */
71    <a name="XML_SAVE_NO_DECL">XML_SAVE_NO_DECL</a> = 2 /* drop the xml declaration */
72    <a name="XML_SAVE_NO_EMPTY">XML_SAVE_NO_EMPTY</a> = 4 /* no empty tags */
73    <a name="XML_SAVE_NO_XHTML">XML_SAVE_NO_XHTML</a> = 8 /* disable XHTML1 specific rules */
74    <a name="XML_SAVE_XHTML">XML_SAVE_XHTML</a> = 16 /* force XHTML1 specific rules */
75    <a name="XML_SAVE_AS_XML">XML_SAVE_AS_XML</a> = 32 /* force XML serialization on HTML doc */
76    <a name="XML_SAVE_AS_HTML">XML_SAVE_AS_HTML</a> = 64 /* force HTML serialization on XML doc */
77    <a name="XML_SAVE_WSNONSIG">XML_SAVE_WSNONSIG</a> = 128 /*  format with non-significant whitespace */
78};
79</pre>
80<p></p>
81</div>
82<hr>
83<div class="refsect2" lang="en">
84<h3>
85<a name="xmlSaveClose"></a>xmlSaveClose ()</h3>
86<pre class="programlisting">int	xmlSaveClose			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt)<br>
87</pre>
88<p>Close a document saving context, i.e. make sure that all bytes have been output and free the associated data.</p>
89<div class="variablelist"><table border="0">
90<col align="left">
91<tbody>
92<tr>
93<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
94<td>a document saving context</td>
95</tr>
96<tr>
97<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
98<td>the number of byte written or -1 in case of error.</td>
99</tr>
100</tbody>
101</table></div>
102</div>
103<hr>
104<div class="refsect2" lang="en">
105<h3>
106<a name="xmlSaveDoc"></a>xmlSaveDoc ()</h3>
107<pre class="programlisting">long	xmlSaveDoc			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
108</pre>
109<p>Save a full document to a saving context TODO: The function is not fully implemented yet as it does not return the byte count but 0 instead</p>
110<div class="variablelist"><table border="0">
111<col align="left">
112<tbody>
113<tr>
114<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
115<td>a document saving context</td>
116</tr>
117<tr>
118<td><span class="term"><i><tt>doc</tt></i>:</span></td>
119<td>a document</td>
120</tr>
121<tr>
122<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
123<td>the number of byte written or -1 in case of error</td>
124</tr>
125</tbody>
126</table></div>
127</div>
128<hr>
129<div class="refsect2" lang="en">
130<h3>
131<a name="xmlSaveFinish"></a>xmlSaveFinish ()</h3>
132<pre class="programlisting">int	xmlSaveFinish			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt)<br>
133</pre>
134<p>Close a document saving context, i.e. make sure that all bytes have been output and free the associated data. Available since 2.13.0.</p>
135<div class="variablelist"><table border="0">
136<col align="left">
137<tbody>
138<tr>
139<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
140<td>a document saving context</td>
141</tr>
142<tr>
143<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
144<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
145</tr>
146</tbody>
147</table></div>
148</div>
149<hr>
150<div class="refsect2" lang="en">
151<h3>
152<a name="xmlSaveFlush"></a>xmlSaveFlush ()</h3>
153<pre class="programlisting">int	xmlSaveFlush			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt)<br>
154</pre>
155<p>Flush a document saving context, i.e. make sure that all bytes have been output.</p>
156<div class="variablelist"><table border="0">
157<col align="left">
158<tbody>
159<tr>
160<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
161<td>a document saving context</td>
162</tr>
163<tr>
164<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
165<td>the number of byte written or -1 in case of error.</td>
166</tr>
167</tbody>
168</table></div>
169</div>
170<hr>
171<div class="refsect2" lang="en">
172<h3>
173<a name="xmlSaveSetAttrEscape"></a>xmlSaveSetAttrEscape ()</h3>
174<pre class="programlisting">int	xmlSaveSetAttrEscape		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escape)<br>
175</pre>
176<p>Set a custom escaping function to be used for text in <a href="libxml2-SAX.html#attribute">attribute</a> content</p>
177<div class="variablelist"><table border="0">
178<col align="left">
179<tbody>
180<tr>
181<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
182<td>a document saving context</td>
183</tr>
184<tr>
185<td><span class="term"><i><tt>escape</tt></i>:</span></td>
186<td>the escaping function</td>
187</tr>
188<tr>
189<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
190<td>0 if successful or -1 in case of error.</td>
191</tr>
192</tbody>
193</table></div>
194</div>
195<hr>
196<div class="refsect2" lang="en">
197<h3>
198<a name="xmlSaveSetEscape"></a>xmlSaveSetEscape ()</h3>
199<pre class="programlisting">int	xmlSaveSetEscape		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escape)<br>
200</pre>
201<p>Set a custom escaping function to be used for text in element content</p>
202<div class="variablelist"><table border="0">
203<col align="left">
204<tbody>
205<tr>
206<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
207<td>a document saving context</td>
208</tr>
209<tr>
210<td><span class="term"><i><tt>escape</tt></i>:</span></td>
211<td>the escaping function</td>
212</tr>
213<tr>
214<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
215<td>0 if successful or -1 in case of error.</td>
216</tr>
217</tbody>
218</table></div>
219</div>
220<hr>
221<div class="refsect2" lang="en">
222<h3>
223<a name="xmlSaveToBuffer"></a>xmlSaveToBuffer ()</h3>
224<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	xmlSaveToBuffer		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br>					 const char * encoding, <br>					 int options)<br>
225</pre>
226<p>Create a document saving context serializing to a buffer with the encoding and the options given</p>
227<div class="variablelist"><table border="0">
228<col align="left">
229<tbody>
230<tr>
231<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
232<td>a buffer</td>
233</tr>
234<tr>
235<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
236<td>the encoding name to use or NULL</td>
237</tr>
238<tr>
239<td><span class="term"><i><tt>options</tt></i>:</span></td>
240<td>a set of xmlSaveOptions</td>
241</tr>
242<tr>
243<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
244<td>a new serialization context or NULL in case of error.</td>
245</tr>
246</tbody>
247</table></div>
248</div>
249<hr>
250<div class="refsect2" lang="en">
251<h3>
252<a name="xmlSaveToFd"></a>xmlSaveToFd ()</h3>
253<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	xmlSaveToFd		(int fd, <br>					 const char * encoding, <br>					 int options)<br>
254</pre>
255<p>Create a document saving context serializing to a file descriptor with the encoding and the options given.</p>
256<div class="variablelist"><table border="0">
257<col align="left">
258<tbody>
259<tr>
260<td><span class="term"><i><tt>fd</tt></i>:</span></td>
261<td>a file descriptor number</td>
262</tr>
263<tr>
264<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
265<td>the encoding name to use or NULL</td>
266</tr>
267<tr>
268<td><span class="term"><i><tt>options</tt></i>:</span></td>
269<td>a set of xmlSaveOptions</td>
270</tr>
271<tr>
272<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
273<td>a new serialization context or NULL in case of error.</td>
274</tr>
275</tbody>
276</table></div>
277</div>
278<hr>
279<div class="refsect2" lang="en">
280<h3>
281<a name="xmlSaveToFilename"></a>xmlSaveToFilename ()</h3>
282<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	xmlSaveToFilename	(const char * filename, <br>					 const char * encoding, <br>					 int options)<br>
283</pre>
284<p>Create a document saving context serializing to a filename or possibly to an URL (but this is less reliable) with the encoding and the options given.</p>
285<div class="variablelist"><table border="0">
286<col align="left">
287<tbody>
288<tr>
289<td><span class="term"><i><tt>filename</tt></i>:</span></td>
290<td>a file name or an URL</td>
291</tr>
292<tr>
293<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
294<td>the encoding name to use or NULL</td>
295</tr>
296<tr>
297<td><span class="term"><i><tt>options</tt></i>:</span></td>
298<td>a set of xmlSaveOptions</td>
299</tr>
300<tr>
301<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
302<td>a new serialization context or NULL in case of error.</td>
303</tr>
304</tbody>
305</table></div>
306</div>
307<hr>
308<div class="refsect2" lang="en">
309<h3>
310<a name="xmlSaveToIO"></a>xmlSaveToIO ()</h3>
311<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	xmlSaveToIO		(<a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> iowrite, <br>					 <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * encoding, <br>					 int options)<br>
312</pre>
313<p>Create a document saving context serializing to a file descriptor with the encoding and the options given</p>
314<div class="variablelist"><table border="0">
315<col align="left">
316<tbody>
317<tr>
318<td><span class="term"><i><tt>iowrite</tt></i>:</span></td>
319<td>an I/O write function</td>
320</tr>
321<tr>
322<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
323<td>an I/O close function</td>
324</tr>
325<tr>
326<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
327<td>an I/O handler</td>
328</tr>
329<tr>
330<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
331<td>the encoding name to use or NULL</td>
332</tr>
333<tr>
334<td><span class="term"><i><tt>options</tt></i>:</span></td>
335<td>a set of xmlSaveOptions</td>
336</tr>
337<tr>
338<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
339<td>a new serialization context or NULL in case of error.</td>
340</tr>
341</tbody>
342</table></div>
343</div>
344<hr>
345<div class="refsect2" lang="en">
346<h3>
347<a name="xmlSaveTree"></a>xmlSaveTree ()</h3>
348<pre class="programlisting">long	xmlSaveTree			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
349</pre>
350<p>Save a subtree starting at the node parameter to a saving context TODO: The function is not fully implemented yet as it does not return the byte count but 0 instead</p>
351<div class="variablelist"><table border="0">
352<col align="left">
353<tbody>
354<tr>
355<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
356<td>a document saving context</td>
357</tr>
358<tr>
359<td><span class="term"><i><tt>cur</tt></i>:</span></td>
360<td>the top node of the subtree to save</td>
361</tr>
362<tr>
363<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
364<td>the number of byte written or -1 in case of error</td>
365</tr>
366</tbody>
367</table></div>
368</div>
369<hr>
370<div class="refsect2" lang="en">
371<h3>
372<a name="xmlThrDefIndentTreeOutput"></a>xmlThrDefIndentTreeOutput ()</h3>
373<pre class="programlisting">int	xmlThrDefIndentTreeOutput	(int v)<br>
374</pre>
375<p></p>
376<div class="variablelist"><table border="0">
377<col align="left">
378<tbody>
379<tr>
380<td><span class="term"><i><tt>v</tt></i>:</span></td>
381<td></td>
382</tr>
383<tr>
384<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
385<td></td>
386</tr>
387</tbody>
388</table></div>
389</div>
390<hr>
391<div class="refsect2" lang="en">
392<h3>
393<a name="xmlThrDefSaveNoEmptyTags"></a>xmlThrDefSaveNoEmptyTags ()</h3>
394<pre class="programlisting">int	xmlThrDefSaveNoEmptyTags	(int v)<br>
395</pre>
396<p></p>
397<div class="variablelist"><table border="0">
398<col align="left">
399<tbody>
400<tr>
401<td><span class="term"><i><tt>v</tt></i>:</span></td>
402<td></td>
403</tr>
404<tr>
405<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
406<td></td>
407</tr>
408</tbody>
409</table></div>
410</div>
411<hr>
412<div class="refsect2" lang="en">
413<h3>
414<a name="xmlThrDefTreeIndentString"></a>xmlThrDefTreeIndentString ()</h3>
415<pre class="programlisting">const char *	xmlThrDefTreeIndentString	(const char * v)<br>
416</pre>
417<p></p>
418<div class="variablelist"><table border="0">
419<col align="left">
420<tbody>
421<tr>
422<td><span class="term"><i><tt>v</tt></i>:</span></td>
423<td></td>
424</tr>
425<tr>
426<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
427<td></td>
428</tr>
429</tbody>
430</table></div>
431</div>
432<hr>
433</div>
434</div>
435</body>
436</html>
437