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
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 }
00061
00062 #endif