saxfilter.cpp
Go to the documentation of this file.00001
00002 #include "saxfilter.h"
00003
00004
00005 void SaxFilter::beginDoc()
00006 {
00007 m_delegate->beginDoc();
00008 }
00009
00010 void SaxFilter::endDoc()
00011 {
00012 m_delegate->endDoc();
00013 }
00014
00015 void SaxFilter::begin(const Xml_string& tag, Xml_attr attr)
00016 {
00017 m_delegate->begin(tag, attr);
00018 }
00019
00020 void SaxFilter::end(const Xml_string& tag)
00021 {
00022 m_delegate->end(tag);
00023 }
00024
00025 void SaxFilter::chars(const Xml_string& text)
00026 {
00027 m_delegate->chars(text);
00028 }
00029
00030
00031 KeepOpen::KeepOpen(SaxHandler* delegate) : SaxFilter(delegate), m_level(0) {}
00032
00033 void KeepOpen::begin(const Xml_string& tag, Xml_attr attr)
00034 {
00035 ++m_level;
00036 if (m_level == 1)
00037 m_tag = tag;
00038 SaxFilter::begin(tag, attr);
00039 }
00040
00041 void KeepOpen::end(const Xml_string& tag)
00042 {
00043 --m_level;
00044 if (m_level > 0)
00045 SaxFilter::end(tag);
00046 }
00047
00048 Xml_string KeepOpen::openTag()
00049 {
00050 return m_tag;
00051 }
00052
00053 RenameElem::RenameElem(SaxHandler* delegate, const Xml_string& oldname, const Xml_string& newname)
00054 : SaxFilter(delegate), m_level(0), m_old(oldname), m_new(newname) {}
00055
00056 RenameElem::RenameElem(SaxHandler* delegate, const Xml_string& newname)
00057 : SaxFilter(delegate), m_level(0), m_old(""), m_new(newname) {}
00058
00059 void RenameElem::begin(const Xml_string& tag, Xml_attr attr)
00060 {
00061 ++m_level;
00062 if (m_level == 1 || m_old == tag)
00063 SaxFilter::begin(m_new, attr);
00064 else
00065 SaxFilter::begin(tag, attr);
00066 }
00067
00068 void RenameElem::end(const Xml_string& tag)
00069 {
00070 if (m_level == 1 || m_old == tag)
00071 SaxFilter::end(m_new);
00072 else
00073 SaxFilter::end(tag);
00074 --m_level;
00075 }
00076
00077
00078 AddAttributes::AddAttributes(SaxHandler* delegate, Xml_attr add)
00079 : SaxFilter(delegate), m_oneshot(false), m_attributes(add) {}
00080
00081
00082 void AddAttributes::begin(const Xml_string& tag, Xml_attr attr)
00083 {
00084 if ( !m_oneshot )
00085 {
00086 m_oneshot = true;
00087 Xml_attr::iterator it;
00088 for (it = attr.begin(); it != attr.end(); ++it)
00089 m_attributes[Xml_key(it)] = Xml_data(it);
00090 SaxFilter::begin(tag, m_attributes);
00091 }
00092 else
00093 SaxFilter::begin(tag, attr);
00094 }
00095