Earth Observation Mission CFI Software FileHandlling Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.20 00003 //-------------------------------------------------------- 00004 00009 00010 #ifndef _XMLFILE_H 00011 #define _XMLFILE_H 00012 00014 #include <CfiClass.h> 00015 #include <CfiError.h> 00016 #include <FileHandlingData.h> 00017 #include <FixedHeader.h> 00018 #include <string.h> 00019 #include <string> 00020 #include <vector> 00021 00023 00024 namespace EECFI 00025 { 00050 00051 class XF_DECL XmlFile : public CfiClass 00052 { 00053 public: 00055 XmlFile(); 00056 00058 explicit XmlFile(const std::string& fileNam); 00059 00061 ~XmlFile() EXCEPT; 00062 00063 // Methods for creating, reading and writing 00064 00066 void create(); 00067 00069 void read(const std::string& fileNam); 00070 00072 void write(); 00073 00075 void write(const std::string& fileNam); 00076 00078 void clean(); 00079 00080 // Methods for navigating the tree 00081 00083 void root(); 00084 00086 void next(); 00087 00089 void nextSibling(); 00090 00092 void toElement(const std::string& element); 00093 00095 void toPath(const std::string& path); 00096 00098 std::string currentElementName() const; 00099 00101 std::string currentPathName() const; 00102 00103 // Methods for reading data 00104 00106 std::string getElementValueAsString(const std::string& element); 00107 00109 long getElementValueAsInt(const std::string& element); 00110 00112 double getElementValueAsReal(const std::string& element); 00113 00115 std::vector<std::string>& getElementArrayAsString(const std::string& element, 00116 std::vector<std::string>& outVector); 00117 00119 std::vector<long>& getElementArrayAsInt(const std::string& element, 00120 std::vector<long>& outVector); 00121 00123 std::vector<double>& getElementArrayAsReal(const std::string& element, 00124 std::vector<double>& outVector); 00125 00127 std::string getAttributeValueAsString(const std::string& element, 00128 const std::string& attribute); 00129 00131 long getAttributeValueAsInt(const std::string& element, 00132 const std::string& attribute); 00133 00135 double getAttributeValueAsReal(const std::string& element, 00136 const std::string& attribute); 00137 00139 std::string getPathValueAsString(const std::string& path); 00140 00142 long getPathValueAsInt(const std::string& path); 00143 00145 double getPathValueAsReal(const std::string& path); 00146 00148 std::vector<std::string>& getPathArrayAsString(const std::string& node, 00149 std::vector<std::string>& outVector); 00150 00152 std::vector<long>& getPathArrayAsInt(const std::string& node, 00153 std::vector<long>& outVector); 00154 00156 std::vector<double>& getPathArrayAsReal(const std::string& node, 00157 std::vector<double>& outVector); 00158 00159 // Methods for adding and removing nodes 00160 00162 void createRoot(const std::string& element); 00163 00165 void addChild(const std::string& parent, 00166 const std::string& child); 00167 00169 void addNext(const std::string& current, 00170 const std::string& next); 00171 00173 void addPrevious(const std::string& current, 00174 const std::string& previous); 00175 00177 void addAttribute(const std::string& element, 00178 const std::string& attribute); 00179 00181 void copyNode(const std::string& destPath, 00182 const std::string& sourceXmlFile, 00183 const std::string& sourcePath); 00184 00186 void removeNode(const std::string& path); 00187 00188 // Methods for setting values 00189 00191 void setValue(const std::string& path, 00192 const std::string& value, 00193 const std::string& format); 00194 00196 void setValue(const std::string& path, 00197 const long value, 00198 const std::string& format); 00199 00201 void setValue(const std::string& path, 00202 const double value, 00203 const std::string& format); 00204 00205 // Methods for adding nodes with values 00206 00208 void addChild(const std::string& parent, 00209 const std::string& child, 00210 const std::string& value, 00211 const std::string& format); 00212 00214 void addChild(const std::string& parent, 00215 const std::string& hild, 00216 const long value, 00217 const std::string& format); 00218 00220 void addChild(const std::string& parent, 00221 const std::string& child, 00222 const double value, 00223 const std::string& format); 00224 00226 void addNext(const std::string& current, 00227 const std::string& next, 00228 const std::string& value, 00229 const std::string& format); 00230 00232 void addNext(const std::string& current, 00233 const std::string& next, 00234 const long value, 00235 const std::string& format); 00236 00238 void addNext(const std::string& current, 00239 const std::string& next, 00240 const double value, 00241 const std::string& format); 00242 00244 void addPrevious(const std::string& current, 00245 const std::string& previous, 00246 const std::string& value, 00247 const std::string& format); 00248 00250 void addPrevious(const std::string& current, 00251 const std::string& previous, 00252 const long value, 00253 const std::string& format); 00254 00256 void addPrevious(const std::string& current, 00257 const std::string& previous, 00258 const double value, 00259 const std::string& format); 00260 00262 void addAttribute(const std::string& element, 00263 const std::string& attribute, 00264 const std::string& value, 00265 const std::string& format); 00266 00268 void addAttribute(const std::string& element, 00269 const std::string& attribute, 00270 const long value, 00271 const std::string& format); 00272 00274 void addAttribute(const std::string& element, 00275 const std::string& attribute, 00276 const double value, 00277 const std::string& format); 00278 00279 // Methods for searching elements by value 00280 00282 std::string findValueInElement(const std::string& element, 00283 const std::string& value); 00284 00286 std::string findValueInPath(const std::string& path, 00287 const std::string& value); 00288 00289 // Methods for handling the file header 00290 00292 void createHeader(long fileExtensionType); 00293 00295 void createHeader(FixedHeader& xmlHeader); 00296 00298 std::string createFileName(long satelliteId, 00299 const std::string& fileClass, 00300 const std::string& fileType, 00301 const std::string& instanceId, 00302 long fileExtensionType) const; 00303 00305 FileNameItems getFileNameItems(std::string& fileNam) const; 00306 00308 void setFixedHeaderItem(const std::string& itemName, 00309 const std::string& itemValue); 00310 00312 void setFixedHeaderItems(const std::string& fileNam, 00313 const std::string& fileDescription, 00314 const std::string& notes, 00315 const std::string& mission, 00316 const std::string& fileClass, 00317 const std::string& filetype, 00318 const std::string& validityStart, 00319 const std::string& validityStop, 00320 const long fileVersion, 00321 const std::string& system, 00322 const std::string& creator, 00323 const std::string& creatorVersion, 00324 const std::string& creationDate); 00325 00327 std::string getFixedHeaderItem(const std::string& itemName); 00328 00330 FixedHeader getFixedHeader(); 00331 00333 long getId() const; 00334 00336 std::string getFileName() const; 00337 00339 void setSchema(const std::string& schemaName, bool setAll); 00340 00342 void removeSchema(bool removeAll); 00343 00345 std::vector<std::string>& getStringValuesFromList(const std::string& listPath, 00346 const std::string& element, 00347 std::vector<std::string>& outVector); 00348 00349 protected: 00350 private: 00351 long id; 00352 std::string fileName; 00353 00354 }; //class XmlFile 00355 } //namespace EECFI 00356 00357 #endif