9#include <xercesc/util/PlatformUtils.hpp> 
   10#include <xercesc/sax2/SAX2XMLReader.hpp> 
   11#include <xercesc/sax2/Attributes.hpp> 
   13#include "IsisXMLHistory.h" 
   14#include "IsisXMLChTrans.h" 
   18namespace XERCES = XERCES_CPP_NAMESPACE;
 
   23IsisXMLHistory::IsisXMLHistory(
char *PencodingName,
 
   24                               bool &PexpandNamespaces,
 
   25                               XERCES::SAX2XMLReader* &Pparser,
 
   26                               std::vector<IsisChangeData> *Pchanges) {
 
   28  encodingName = PencodingName;
 
   29  expandNamespaces = PexpandNamespaces;
 
   33  prevDocHandler = parser->getContentHandler();
 
   34  prevErrorHandler = parser->getErrorHandler();
 
   36  parser->setContentHandler(
this);
 
   37  parser->setErrorHandler(
this);
 
   39  generalHandler = NULL;
 
   43IsisXMLHistory::~IsisXMLHistory() {
 
   44  if(generalHandler != NULL) 
delete generalHandler;
 
   45  if(ignoreHandler != NULL) 
delete ignoreHandler;
 
   50void IsisXMLHistory::characters(
const XMLCh *
const chars,
 
   51                                const XMLSize_t length) {}
 
   54void IsisXMLHistory::endElement(
const XMLCh *
const uri,
 
   55                                const XMLCh *
const localname,
 
   56                                const XMLCh *
const qname) {
 
   57  parser->setContentHandler(prevDocHandler);
 
   58  parser->setErrorHandler(prevErrorHandler);
 
   62void IsisXMLHistory::startElement(
const XMLCh *
const uri,
 
   63                                  const XMLCh *
const localname,
 
   64                                  const XMLCh *
const qname,
 
   65                                  const XERCES::Attributes &attributes) {
 
   67  if((
string)XERCES::XMLString::transcode(localname) == (
string)
"change") {
 
   68    if(generalHandler != NULL) {
 
   69      delete generalHandler;
 
   70      generalHandler = NULL;
 
   74    unsigned int index = changes->size();
 
   75    changes->resize(index + 1);
 
   79    for(
unsigned int i = 0; i < 2; i++) {
 
   80      st = XERCES::XMLString::transcode(attributes.getQName(i));
 
   82        (*changes)[index].name = XERCES::XMLString::transcode(attributes.getValue(i));
 
   84      else if(st == 
"date") {
 
   85        (*changes)[index].date = XERCES::XMLString::transcode(attributes.getValue(i));
 
   89    generalHandler = 
new IsisXMLHandler(encodingName, expandNamespaces,
 
   90                                        parser, &(*changes)[index].description);
 
   93    if(ignoreHandler != NULL) {
 
   97    ignoreHandler = 
new IsisXMLIgnore(encodingName, expandNamespaces, parser,
 
   98                                      (
string)XERCES::XMLString::transcode(localname));
 
This is free and unencumbered software released into the public domain.
This is free and unencumbered software released into the public domain.
Namespace for the standard library.