/** * @file * * @brief XML/HTML serializer * * API to save documents or subtrees of documents. * * @copyright See Copyright for the status of this software. * * @author Daniel Veillard */ #ifndef __XML_XMLSAVE_H__ #define __XML_XMLSAVE_H__ #include #include #include #include #ifdef LIBXML_OUTPUT_ENABLED #ifdef __cplusplus extern "C" { #endif /** * This is the set of XML save options that can be passed down * to the #xmlSaveToFd and similar calls. */ typedef enum { /** * Format output. This adds newlines and enables indenting * by default. */ XML_SAVE_FORMAT = 1<<0, /** * Don't emit an XML declaration. */ XML_SAVE_NO_DECL = 1<<1, /** * Don't emit empty tags. */ XML_SAVE_NO_EMPTY = 1<<2, /** * Don't serialize as XHTML. */ XML_SAVE_NO_XHTML = 1<<3, /** * Always serialize as XHTML. */ XML_SAVE_XHTML = 1<<4, /** * Serialize HTML documents as XML. */ XML_SAVE_AS_XML = 1<<5, /** * Serialize XML documents as HTML. */ XML_SAVE_AS_HTML = 1<<6, /** * Format with non-significant whitespace. * TODO: What does this mean? */ XML_SAVE_WSNONSIG = 1<<7, /** * Always emit empty tags. This is the default unless the * deprecated thread-local setting xmlSaveNoEmptyTags is * set to 1. * * @since 2.14 */ XML_SAVE_EMPTY = 1<<8, /** * Don't indent output when formatting. * * @since 2.14 */ XML_SAVE_NO_INDENT = 1<<9, /** * Always indent output when formatting. This is the default * unless the deprecated thread-local setting * xmlIndentTreeOutput is set to 0. * * @since 2.14 */ XML_SAVE_INDENT = 1<<10 } xmlSaveOption; /** XML and HTML serializer */ typedef struct _xmlSaveCtxt xmlSaveCtxt; typedef xmlSaveCtxt *xmlSaveCtxtPtr; XMLPUBFUN xmlSaveCtxt * xmlSaveToFd (int fd, const char *encoding, int options); XMLPUBFUN xmlSaveCtxt * xmlSaveToFilename (const char *filename, const char *encoding, int options); XMLPUBFUN xmlSaveCtxt * xmlSaveToBuffer (xmlBuffer *buffer, const char *encoding, int options); XMLPUBFUN xmlSaveCtxt * xmlSaveToIO (xmlOutputWriteCallback iowrite, xmlOutputCloseCallback ioclose, void *ioctx, const char *encoding, int options); XMLPUBFUN long xmlSaveDoc (xmlSaveCtxt *ctxt, xmlDoc *doc); XMLPUBFUN long xmlSaveTree (xmlSaveCtxt *ctxt, xmlNode *node); XMLPUBFUN int xmlSaveFlush (xmlSaveCtxt *ctxt); XMLPUBFUN int xmlSaveClose (xmlSaveCtxt *ctxt); XMLPUBFUN xmlParserErrors xmlSaveFinish (xmlSaveCtxt *ctxt); XMLPUBFUN int xmlSaveSetIndentString (xmlSaveCtxt *ctxt, const char *indent); XML_DEPRECATED XMLPUBFUN int xmlSaveSetEscape (xmlSaveCtxt *ctxt, xmlCharEncodingOutputFunc escape); XML_DEPRECATED XMLPUBFUN int xmlSaveSetAttrEscape (xmlSaveCtxt *ctxt, xmlCharEncodingOutputFunc escape); XML_DEPRECATED XMLPUBFUN int xmlThrDefIndentTreeOutput(int v); XML_DEPRECATED XMLPUBFUN const char * xmlThrDefTreeIndentString(const char * v); XML_DEPRECATED XMLPUBFUN int xmlThrDefSaveNoEmptyTags(int v); #ifdef __cplusplus } #endif #endif /* LIBXML_OUTPUT_ENABLED */ #endif /* __XML_XMLSAVE_H__ */