1 <?xml version=
"1.0" encoding=
"UTF-8"?>
4 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8"/>
5 <title>xmlsave: the XML document serializer
</title>
6 <meta name=
"generator" content=
"Libxml2 devhelp stylesheet"/>
7 <link rel=
"start" href=
"index.html" title=
"libxml2 Reference Manual"/>
8 <link rel=
"up" href=
"general.html" title=
"API"/>
9 <link rel=
"stylesheet" href=
"style.css" type=
"text/css"/>
10 <link rel=
"chapter" href=
"general.html" title=
"API"/>
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table class=
"navigation" width=
"100%" summary=
"Navigation header" cellpadding=
"2" cellspacing=
"2">
16 <a accesskey=
"p" href=
"libxml2-xmlregexp.html">
17 <img src=
"left.png" width=
"24" height=
"24" border=
"0" alt=
"Prev"/>
21 <a accesskey=
"u" href=
"general.html">
22 <img src=
"up.png" width=
"24" height=
"24" border=
"0" alt=
"Up"/>
26 <a accesskey=
"h" href=
"index.html">
27 <img src=
"home.png" width=
"24" height=
"24" border=
"0" alt=
"Home"/>
31 <a accesskey=
"n" href=
"libxml2-xmlschemas.html">
32 <img src=
"right.png" width=
"24" height=
"24" border=
"0" alt=
"Next"/>
35 <th width=
"100%" align=
"center">libxml2 Reference Manual
</th>
39 <span class=
"refentrytitle">xmlsave
</span>
41 <p>xmlsave - the XML document serializer
</p>
42 <p>API to save document or subtree of document
</p>
43 <p>Author(s): Daniel Veillard
</p>
44 <div class=
"refsynopsisdiv">
46 <pre class=
"synopsis">typedef enum
<a href=
"#xmlSaveOption">xmlSaveOption
</a>;
47 typedef struct _xmlSaveCtxt
<a href=
"#xmlSaveCtxt">xmlSaveCtxt
</a>;
48 typedef
<a href=
"libxml2-xmlsave.html#xmlSaveCtxt">xmlSaveCtxt
</a> *
<a href=
"#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a>;
49 <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);
50 <a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> <a href=
"#xmlSaveToFd">xmlSaveToFd
</a> (int fd,
<br/> const char * encoding,
<br/> int options);
51 int
<a href=
"#xmlSaveClose">xmlSaveClose
</a> (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt);
52 int
<a href=
"#xmlSaveSetAttrEscape">xmlSaveSetAttrEscape
</a> (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt,
<br/> <a href=
"libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc
</a> escape);
53 <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);
54 <a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> <a href=
"#xmlSaveToFilename">xmlSaveToFilename
</a> (const char * filename,
<br/> const char * encoding,
<br/> int options);
55 int
<a href=
"#xmlSaveFlush">xmlSaveFlush
</a> (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt);
56 long
<a href=
"#xmlSaveDoc">xmlSaveDoc
</a> (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt,
<br/> <a href=
"libxml2-tree.html#xmlDocPtr">xmlDocPtr
</a> doc);
57 int
<a href=
"#xmlSaveSetEscape">xmlSaveSetEscape
</a> (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt,
<br/> <a href=
"libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc
</a> escape);
58 long
<a href=
"#xmlSaveTree">xmlSaveTree
</a> (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt,
<br/> <a href=
"libxml2-tree.html#xmlNodePtr">xmlNodePtr
</a> node);
61 <div class=
"refsect1" lang=
"en">
64 <div class=
"refsect1" lang=
"en">
66 <div class=
"refsect2" lang=
"en">
67 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveCtxt">Structure
</a>xmlSaveCtxt
</h3><pre class=
"programlisting">struct _xmlSaveCtxt {
68 The content of this structure is not made public by the API.
73 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveCtxtPtr">Typedef
</a>xmlSaveCtxtPtr
</h3><pre class=
"programlisting"><a href=
"libxml2-xmlsave.html#xmlSaveCtxt">xmlSaveCtxt
</a> * xmlSaveCtxtPtr;
77 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveOption">Enum
</a>xmlSaveOption
</h3><pre class=
"programlisting">enum
<a href=
"#xmlSaveOption">xmlSaveOption
</a> {
78 <a name=
"XML_SAVE_FORMAT">XML_SAVE_FORMAT
</a> =
1 /* format save output */
79 <a name=
"XML_SAVE_NO_DECL">XML_SAVE_NO_DECL
</a> =
2 /* drop the xml declaration */
80 <a name=
"XML_SAVE_NO_EMPTY">XML_SAVE_NO_EMPTY
</a> =
4 /* no empty tags */
81 <a name=
"XML_SAVE_NO_XHTML">XML_SAVE_NO_XHTML
</a> =
8 /* disable XHTML1 specific rules */
82 <a name=
"XML_SAVE_XHTML">XML_SAVE_XHTML
</a> =
16 /* force XHTML1 specific rules */
83 <a name=
"XML_SAVE_AS_XML">XML_SAVE_AS_XML
</a> =
32 /* force XML serialization on HTML doc */
84 <a name=
"XML_SAVE_AS_HTML">XML_SAVE_AS_HTML
</a> =
64 /* force HTML serialization on XML doc */
85 <a name=
"XML_SAVE_WSNONSIG">XML_SAVE_WSNONSIG
</a> =
128 /* format with non-significant whitespace */
90 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveClose"/>xmlSaveClose ()
</h3><pre class=
"programlisting">int xmlSaveClose (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt)
<br/>
91 </pre><p>Close a document saving context, i.e. make sure that all bytes have been output and free the associated data.
</p>
92 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>ctxt
</tt></i>:
</span></td><td>a document saving context
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the number of byte written or -
1 in case of error.
</td></tr></tbody></table></div></div>
94 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveDoc"/>xmlSaveDoc ()
</h3><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/>
95 </pre><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>
96 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>ctxt
</tt></i>:
</span></td><td>a document saving context
</td></tr><tr><td><span class=
"term"><i><tt>doc
</tt></i>:
</span></td><td>a document
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the number of byte written or -
1 in case of error
</td></tr></tbody></table></div></div>
98 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveFlush"/>xmlSaveFlush ()
</h3><pre class=
"programlisting">int xmlSaveFlush (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt)
<br/>
99 </pre><p>Flush a document saving context, i.e. make sure that all bytes have been output.
</p>
100 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>ctxt
</tt></i>:
</span></td><td>a document saving context
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the number of byte written or -
1 in case of error.
</td></tr></tbody></table></div></div>
102 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveSetAttrEscape"/>xmlSaveSetAttrEscape ()
</h3><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/>
103 </pre><p>Set a custom escaping function to be used for text in
<a href=
"libxml2-SAX.html#attribute">attribute
</a> content
</p>
104 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>ctxt
</tt></i>:
</span></td><td>a document saving context
</td></tr><tr><td><span class=
"term"><i><tt>escape
</tt></i>:
</span></td><td>the escaping function
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>0 if successful or -
1 in case of error.
</td></tr></tbody></table></div></div>
106 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveSetEscape"/>xmlSaveSetEscape ()
</h3><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/>
107 </pre><p>Set a custom escaping function to be used for text in element content
</p>
108 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>ctxt
</tt></i>:
</span></td><td>a document saving context
</td></tr><tr><td><span class=
"term"><i><tt>escape
</tt></i>:
</span></td><td>the escaping function
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>0 if successful or -
1 in case of error.
</td></tr></tbody></table></div></div>
110 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveToBuffer"/>xmlSaveToBuffer ()
</h3><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/>
111 </pre><p>Create a document saving context serializing to a buffer with the encoding and the options given
</p>
112 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>buffer
</tt></i>:
</span></td><td>a buffer
</td></tr><tr><td><span class=
"term"><i><tt>encoding
</tt></i>:
</span></td><td>the encoding name to use or NULL
</td></tr><tr><td><span class=
"term"><i><tt>options
</tt></i>:
</span></td><td>a set of xmlSaveOptions
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>a new serialization context or NULL in case of error.
</td></tr></tbody></table></div></div>
114 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveToFd"/>xmlSaveToFd ()
</h3><pre class=
"programlisting"><a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> xmlSaveToFd (int fd,
<br/> const char * encoding,
<br/> int options)
<br/>
115 </pre><p>Create a document saving context serializing to a file descriptor with the encoding and the options given.
</p>
116 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>fd
</tt></i>:
</span></td><td>a file descriptor number
</td></tr><tr><td><span class=
"term"><i><tt>encoding
</tt></i>:
</span></td><td>the encoding name to use or NULL
</td></tr><tr><td><span class=
"term"><i><tt>options
</tt></i>:
</span></td><td>a set of xmlSaveOptions
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>a new serialization context or NULL in case of error.
</td></tr></tbody></table></div></div>
118 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveToFilename"/>xmlSaveToFilename ()
</h3><pre class=
"programlisting"><a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> xmlSaveToFilename (const char * filename,
<br/> const char * encoding,
<br/> int options)
<br/>
119 </pre><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>
120 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>filename
</tt></i>:
</span></td><td>a file name or an URL
</td></tr><tr><td><span class=
"term"><i><tt>encoding
</tt></i>:
</span></td><td>the encoding name to use or NULL
</td></tr><tr><td><span class=
"term"><i><tt>options
</tt></i>:
</span></td><td>a set of xmlSaveOptions
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>a new serialization context or NULL in case of error.
</td></tr></tbody></table></div></div>
122 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveToIO"/>xmlSaveToIO ()
</h3><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/>
123 </pre><p>Create a document saving context serializing to a file descriptor with the encoding and the options given
</p>
124 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>iowrite
</tt></i>:
</span></td><td>an I/O write function
</td></tr><tr><td><span class=
"term"><i><tt>ioclose
</tt></i>:
</span></td><td>an I/O close function
</td></tr><tr><td><span class=
"term"><i><tt>ioctx
</tt></i>:
</span></td><td>an I/O handler
</td></tr><tr><td><span class=
"term"><i><tt>encoding
</tt></i>:
</span></td><td>the encoding name to use or NULL
</td></tr><tr><td><span class=
"term"><i><tt>options
</tt></i>:
</span></td><td>a set of xmlSaveOptions
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>a new serialization context or NULL in case of error.
</td></tr></tbody></table></div></div>
126 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlSaveTree"/>xmlSaveTree ()
</h3><pre class=
"programlisting">long xmlSaveTree (
<a href=
"libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr
</a> ctxt,
<br/> <a href=
"libxml2-tree.html#xmlNodePtr">xmlNodePtr
</a> node)
<br/>
127 </pre><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>
128 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>ctxt
</tt></i>:
</span></td><td>a document saving context
</td></tr><tr><td><span class=
"term"><i><tt>node
</tt></i>:
</span></td><td>the top node of the subtree to save
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the number of byte written or -
1 in case of error
</td></tr></tbody></table></div></div>