Main Page | Class Hierarchy | Class List | File List | Class Members

MergeXML.h

00001 #ifndef GEAR_MergeXML_H
00002 #define GEAR_MergeXML_H
00003 
00004 #include <string>
00005 #include "gearxml/tinyxml.h"
00006 
00007 #define NAME_STR "name"
00008 
00009 namespace gear {
00010 
00011   class TiXmlDocument ;
00012 
00018   class MergeXML {
00019 
00020   public:
00021 
00025     bool setFile1( const std::string& fileName ) ;
00026 
00030     bool setFile2( const std::string& fileName ) ;
00031 
00036     void makeDominant(const int domFileNr )
00037       {
00038         if (domFileNr==1 || domFileNr==2) { 
00039           _domFile = domFileNr ;
00040         }
00041       }
00042 
00045     bool mergeFiles (const std::string& fileName ) ;
00046 
00049     MergeXML() : 
00050       _domFile(2),
00051       _name(NAME_STR) {
00052     }
00053     
00054 
00055   private:
00056 
00057     //checks whether file can be read in
00058     bool checkXML( const std::string& fileName ) ;
00059 
00060     //get files correct: dominant will be _file2 and recessiv will be _file1
00061     void correctDominantFile() ;
00062 
00063     //compare nodes
00064     void mergeNode( TiXmlNode* node, TiXmlNode* domNode ) ;
00065 
00066     // merge childsNodes where domNode overrules Node
00067     void mergeElement( TiXmlNode* node, TiXmlNode* domNode ) ;
00068 
00069     // merge childElements where domNode overrules Node
00070     void mergeAttribute( TiXmlElement* element, TiXmlElement* domElement ) ;
00071 
00072     // count the number of nodes that look like childNode in parentNode
00073     int countNodes( TiXmlNode* childNode, TiXmlNode* domNode ) ;
00074 
00075     // get chilElement with same Attribute name
00076     TiXmlNode* getChildNode( TiXmlNode* node, TiXmlNode* domNode, int getOccurence = 1 ) ;
00077 
00078     // get the Name of the Node - either as value of the attribute name or as node->Value() 
00079     std::string getNodeName( TiXmlNode* node ) ;
00080 
00081     // check if the Node has the required attribute
00082     bool hasAttribute( TiXmlNode* node ) ;
00083 
00084     //file1
00085     TiXmlDocument* _file1 ;
00086 
00087     //file2
00088     TiXmlDocument* _file2 ;
00089 
00090     //fileSwap - if dominant changes
00091     TiXmlDocument* _fileSwap ;
00092 
00093     //fileMerged - final document
00094     TiXmlDocument* _fileMerged ;
00095 
00096     //dominant file - default file2
00097     int _domFile ;
00098 
00099     // unique attribute as identifier for nodes
00100     char* _name ;
00101     
00102   }; //class
00103 
00104 } //namespace
00105     
00106 #endif

Generated on Tue Sep 5 11:36:29 2006 for Gear by doxygen 1.3.5