LibXmlDomWritingContext.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _LibXmlDomWritingContext_hxx_
00023 #define _LibXmlDomWritingContext_hxx_
00024
00025 #include <libxml++/nodes/textnode.h>
00026 #include <libxml++/nodes/element.h>
00027 #include <libxml++/document.h>
00028 #include "LibXmlEncodings.hxx"
00029
00030 namespace CLAM
00031 {
00032 class LibXmlDomDocumentHandler;
00033
00038 class LibXmlDomWritingContext
00039 {
00040 xmlpp::Element * _currentElement;
00041 LibXmlDomWritingContext * _parent;
00042 public:
00043 LibXmlDomWritingContext(xmlpp::Element * element)
00044 {
00045 _parent = 0;
00046 _currentElement = element;
00047 }
00048 LibXmlDomWritingContext(LibXmlDomDocumentHandler & docHandler);
00049
00050 LibXmlDomWritingContext(LibXmlDomWritingContext * parent, const char * name)
00051 {
00052 _parent = parent;
00053 xmlpp::Element * parentElement = parent->_currentElement;
00054 _currentElement = parentElement->add_child(U(name));
00055 }
00056
00057 LibXmlDomWritingContext * release()
00058 {
00059 return _parent;
00060 }
00061
00062 void addAttribute(const char * name, const char * value)
00063 {
00064 _currentElement->set_attribute(U(name),U(value));
00065 }
00066 void addContent(const char * content)
00067 {
00068 _currentElement->add_child_text(U(content));
00069 }
00070 };
00071
00072 }
00073
00074 #endif//_LibXmlDomWritingContext_hxx_
00075
00076