489 lines
21 KiB
C
489 lines
21 KiB
C
|
/*
|
||
|
* Summary: text writing API for XML
|
||
|
* Description: text writing API for XML
|
||
|
*
|
||
|
* Copy: See Copyright for the status of this software.
|
||
|
*
|
||
|
* Author: Alfred Mickautsch <alfred@mickautsch.de>
|
||
|
*/
|
||
|
|
||
|
#ifndef __XML_XMLWRITER_H__
|
||
|
#define __XML_XMLWRITER_H__
|
||
|
|
||
|
#include <libxml/xmlversion.h>
|
||
|
|
||
|
#ifdef LIBXML_WRITER_ENABLED
|
||
|
|
||
|
#include <stdarg.h>
|
||
|
#include <libxml/xmlIO.h>
|
||
|
#include <libxml/list.h>
|
||
|
#include <libxml/xmlstring.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
typedef struct _xmlTextWriter xmlTextWriter;
|
||
|
typedef xmlTextWriter *xmlTextWriterPtr;
|
||
|
|
||
|
/*
|
||
|
* Constructors & Destructor
|
||
|
*/
|
||
|
XMLPUBFUN xmlTextWriterPtr XMLCALL
|
||
|
xmlNewTextWriter(xmlOutputBufferPtr out);
|
||
|
XMLPUBFUN xmlTextWriterPtr XMLCALL
|
||
|
xmlNewTextWriterFilename(const char *uri, int compression);
|
||
|
XMLPUBFUN xmlTextWriterPtr XMLCALL
|
||
|
xmlNewTextWriterMemory(xmlBufferPtr buf, int compression);
|
||
|
XMLPUBFUN xmlTextWriterPtr XMLCALL
|
||
|
xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression);
|
||
|
XMLPUBFUN xmlTextWriterPtr XMLCALL
|
||
|
xmlNewTextWriterDoc(xmlDocPtr * doc, int compression);
|
||
|
XMLPUBFUN xmlTextWriterPtr XMLCALL
|
||
|
xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node,
|
||
|
int compression);
|
||
|
XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer);
|
||
|
|
||
|
/*
|
||
|
* Functions
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Document
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterStartDocument(xmlTextWriterPtr writer,
|
||
|
const char *version,
|
||
|
const char *encoding,
|
||
|
const char *standalone);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndDocument(xmlTextWriterPtr
|
||
|
writer);
|
||
|
|
||
|
/*
|
||
|
* Comments
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterStartComment(xmlTextWriterPtr
|
||
|
writer);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(2,3);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,
|
||
|
const char *format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(2,0);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
|
||
|
/*
|
||
|
* Elements
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterStartElement(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar *
|
||
|
prefix,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar *
|
||
|
namespaceURI);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr
|
||
|
writer);
|
||
|
|
||
|
/*
|
||
|
* Elements conveniency functions
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(3,4);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const char *format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(3,0);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer,
|
||
|
const xmlChar * prefix,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * namespaceURI,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(5,6);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,
|
||
|
const xmlChar * prefix,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * namespaceURI,
|
||
|
const char *format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(5,0);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar *
|
||
|
prefix,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar *
|
||
|
namespaceURI,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
|
||
|
/*
|
||
|
* Text
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(2,3);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer,
|
||
|
const char *format, va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(2,0);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteRawLen(xmlTextWriterPtr writer,
|
||
|
const xmlChar * content, int len);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteRaw(xmlTextWriterPtr writer,
|
||
|
const xmlChar * content);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const char
|
||
|
*format, ...)
|
||
|
LIBXML_ATTR_FORMAT(2,3);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const char
|
||
|
*format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(2,0);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteBase64(xmlTextWriterPtr writer,
|
||
|
const char *data,
|
||
|
int start, int len);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteBinHex(xmlTextWriterPtr writer,
|
||
|
const char *data,
|
||
|
int start, int len);
|
||
|
|
||
|
/*
|
||
|
* Attributes
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterStartAttribute(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterStartAttributeNS(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar *
|
||
|
prefix,
|
||
|
const xmlChar *
|
||
|
name,
|
||
|
const xmlChar *
|
||
|
namespaceURI);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndAttribute(xmlTextWriterPtr
|
||
|
writer);
|
||
|
|
||
|
/*
|
||
|
* Attributes conveniency functions
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(3,4);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const char *format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(3,0);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer,
|
||
|
const xmlChar * prefix,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * namespaceURI,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(5,6);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer,
|
||
|
const xmlChar * prefix,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * namespaceURI,
|
||
|
const char *format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(5,0);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar *
|
||
|
prefix,
|
||
|
const xmlChar *
|
||
|
name,
|
||
|
const xmlChar *
|
||
|
namespaceURI,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
|
||
|
/*
|
||
|
* PI's
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterStartPI(xmlTextWriterPtr writer,
|
||
|
const xmlChar * target);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer);
|
||
|
|
||
|
/*
|
||
|
* PI conveniency functions
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer,
|
||
|
const xmlChar * target,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(3,4);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer,
|
||
|
const xmlChar * target,
|
||
|
const char *format, va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(3,0);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWritePI(xmlTextWriterPtr writer,
|
||
|
const xmlChar * target,
|
||
|
const xmlChar * content);
|
||
|
|
||
|
/**
|
||
|
* xmlTextWriterWriteProcessingInstruction:
|
||
|
*
|
||
|
* This macro maps to xmlTextWriterWritePI
|
||
|
*/
|
||
|
#define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI
|
||
|
|
||
|
/*
|
||
|
* CDATA
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer);
|
||
|
|
||
|
/*
|
||
|
* CDATA conveniency functions
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(2,3);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer,
|
||
|
const char *format, va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(2,0);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteCDATA(xmlTextWriterPtr writer,
|
||
|
const xmlChar * content);
|
||
|
|
||
|
/*
|
||
|
* DTD
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterStartDTD(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * pubid,
|
||
|
const xmlChar * sysid);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer);
|
||
|
|
||
|
/*
|
||
|
* DTD conveniency functions
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * pubid,
|
||
|
const xmlChar * sysid,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(5,6);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * pubid,
|
||
|
const xmlChar * sysid,
|
||
|
const char *format, va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(5,0);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteDTD(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * pubid,
|
||
|
const xmlChar * sysid,
|
||
|
const xmlChar * subset);
|
||
|
|
||
|
/**
|
||
|
* xmlTextWriterWriteDocType:
|
||
|
*
|
||
|
* this macro maps to xmlTextWriterWriteDTD
|
||
|
*/
|
||
|
#define xmlTextWriterWriteDocType xmlTextWriterWriteDTD
|
||
|
|
||
|
/*
|
||
|
* DTD element definition
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterStartDTDElement(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr
|
||
|
writer);
|
||
|
|
||
|
/*
|
||
|
* DTD element definition conveniency functions
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(3,4);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const char *format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(3,0);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar *
|
||
|
name,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
|
||
|
/*
|
||
|
* DTD attribute list definition
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr
|
||
|
writer);
|
||
|
|
||
|
/*
|
||
|
* DTD attribute list definition conveniency functions
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(3,4);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const char *format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(3,0);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar *
|
||
|
name,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
|
||
|
/*
|
||
|
* DTD entity definition
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer,
|
||
|
int pe, const xmlChar * name);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr
|
||
|
writer);
|
||
|
|
||
|
/*
|
||
|
* DTD entity definition conveniency functions
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer,
|
||
|
int pe,
|
||
|
const xmlChar * name,
|
||
|
const char *format, ...)
|
||
|
LIBXML_ATTR_FORMAT(4,5);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer,
|
||
|
int pe,
|
||
|
const xmlChar * name,
|
||
|
const char *format,
|
||
|
va_list argptr)
|
||
|
LIBXML_ATTR_FORMAT(4,0);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer,
|
||
|
int pe,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * content);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer,
|
||
|
int pe,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * pubid,
|
||
|
const xmlChar * sysid,
|
||
|
const xmlChar * ndataid);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr
|
||
|
writer,
|
||
|
const xmlChar * pubid,
|
||
|
const xmlChar * sysid,
|
||
|
const xmlChar *
|
||
|
ndataid);
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDEntity(xmlTextWriterPtr
|
||
|
writer, int pe,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar *
|
||
|
pubid,
|
||
|
const xmlChar *
|
||
|
sysid,
|
||
|
const xmlChar *
|
||
|
ndataid,
|
||
|
const xmlChar *
|
||
|
content);
|
||
|
|
||
|
/*
|
||
|
* DTD notation definition
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer,
|
||
|
const xmlChar * name,
|
||
|
const xmlChar * pubid,
|
||
|
const xmlChar * sysid);
|
||
|
|
||
|
/*
|
||
|
* Indentation
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterSetIndentString(xmlTextWriterPtr writer,
|
||
|
const xmlChar * str);
|
||
|
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* misc
|
||
|
*/
|
||
|
XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* LIBXML_WRITER_ENABLED */
|
||
|
|
||
|
#endif /* __XML_XMLWRITER_H__ */
|