Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

SAX2DefaultHandler.cxx

Go to the documentation of this file.
00001 
00002 #include "XMLInterface/SAX2DefaultHandler.h"
00003 #include <iostream>
00004 #include <xercesc/sax2/DefaultHandler.hpp>
00005 #include <xercesc/sax2/Attributes.hpp>
00006 #include "XMLInterface/ChString.h"
00007 #include "XMLInterface/Attribute.h"
00008 #include "XMLInterface/SAX2Handler.h"
00009 
00010 
00011 xmli::SAX2DefaultHandler::~SAX2DefaultHandler() 
00012 {
00013   
00014   xmli::SAX2Handler* handler = 0;
00015 
00016   if (fHandler.empty()==false) {
00017     for (handler = fHandler.top(); handler!=0; fHandler.pop()) {
00018       std::cerr << "xmli::SAX2DefaultHandler::" << __LINE__ 
00019                 << " Unterminated tag."       << std::endl;
00020       delete handler;  
00021     }
00022   }
00023 }
00024 
00025 //......................................................................
00026 
00027 void xmli::SAX2DefaultHandler::startElement(const XMLCh* const uri,
00028                                             const XMLCh* const localname,
00029                                             const XMLCh* const qname,
00030                                             const Attributes&  attributes) 
00031 {
00032   xmli::ChString uris(uri);
00033   xmli::ChString localnames(localname);
00034   xmli::ChString qnames(qname);
00035 
00036   xmli::AttributeList attr;
00037   for (unsigned int i=0; i<attributes.getLength(); ++i) {
00038     xmli::ChString names  = attributes.getLocalName(i);
00039     xmli::ChString values = attributes.getValue(i);
00040     xmli::Attribute a(names,values);
00041     attr.push_back(a);
00042   }
00043   
00044   xmli::SAX2Handler* handler = new xmli::SAX2Handler();
00045   if (handler) {
00046     handler->StartElement(uris,localnames,qnames,attr);
00047   }
00048   fHandler.push(handler);
00049 }
00050 
00051 //......................................................................
00052 
00053 void xmli::SAX2DefaultHandler::endElement(const XMLCh* const uri,
00054                                           const XMLCh* const localname,
00055                                           const XMLCh* const qname)
00056 {
00057   xmli::ChString uris(uri);
00058   xmli::ChString localnames(localname);
00059   xmli::ChString qnames(qname);
00060   
00061   xmli::SAX2Handler* handler = fHandler.top();
00062   if (handler) {
00063     handler->EndElement(uris,localnames,qnames);
00064     delete handler;
00065   }
00066   fHandler.pop();
00067 }
00068 
00069 //......................................................................
00070 
00071 void xmli::SAX2DefaultHandler::characters(const XMLCh* const chars,
00072                                           const unsigned int /*length*/) 
00073 {
00074   xmli::ChString chs(chars);
00075   xmli::SAX2Handler* handler = fHandler.top();
00076   if (handler) handler->Characters(chs);
00077 }
00078 

Generated on Thu Sep 4 02:05:28 2008 for NOvA Offline by doxygen 1.3.5