XMLHelpers.h

Go to the documentation of this file.
00001 #ifndef ATLFAST_XMLHELPERS_H
00002 #define ATLFAST_XMLHELPERS_H
00003 
00004 #include <xercesc/parsers/XercesDOMParser.hpp>
00005 #include <xercesc/dom/DOM.hpp>
00006 #include <xercesc/dom/DOMImplementation.hpp>
00007 #include <xercesc/dom/DOMImplementationLS.hpp>
00008 #include <xercesc/dom/DOMWriter.hpp>
00009 
00010 #include <xercesc/framework/StdOutFormatTarget.hpp>
00011 // #include <xercesc/framework/XercesDOMParser.hpp>
00012 
00013 #include <xercesc/sax/HandlerBase.hpp>
00014 #include <xercesc/util/XMLString.hpp>
00015 #include <xercesc/util/XMLUni.hpp>
00016 #include <xercesc/util/PlatformUtils.hpp>
00017   
00018 #if defined(XERCES_NEW_IOSTREAMS)
00019 #include <iostream>
00020 #else
00021 #include <iostream.h>
00022 #endif
00023 
00024 #include <vector>
00025 #include <algorithm>
00026 #include <string.h>
00027 #include <cstring>
00028 #include <sstream>
00029 
00030 XERCES_CPP_NAMESPACE_USE
00031 
00032 
00033 namespace Atlfast{
00034   
00035   char* getText(DOMNode* node);
00036   std::vector<DOMNode*>  getAllChildTagsByName(DOMNode* node, std::string name);
00037   DOMNode* getFirstChildTagByName(DOMNode* node, std::string name);
00038   void getFirstValue(DOMNode* node, std::string tagname, std::string&  value);
00039   void getFirstValue(DOMNode* node, std::string tagname, double& value);
00040   void getFirstValue(DOMNode* node, std::string tagname, int& value);
00041   void getAllValues(DOMNode* node, std::string tagname, std::vector<double> &values);
00042   DOMDocument* parseFileForDocument(const char* xmlFile);
00043   std::vector<char*> getTagVals(DOMElement* docElement, const char* tagname);
00044   
00045   // ============================================
00046   class GetDoublesFromNodes{
00047   public:
00048     void operator()(DOMNode* n){
00049       char* s = getText(n);
00050       m_doubles.push_back(atof(s));
00051       XMLString::release(&s);
00052     }
00053 
00054     std::vector<double> doubles() const {return m_doubles;} 
00055   private:
00056     std::vector<double> m_doubles;
00057   };
00058   // ============================================
00059   
00060 } //namespace Atlfast
00061 
00062 #endif

Generated on Mon Sep 24 14:19:11 2007 for AtlfastAlgs by  doxygen 1.5.1