1 |
#ifndef UTILXMLTOOLS_H |
2 |
#define UTILXMLTOOLS_H |
3 |
|
4 |
// Utilities functions specific used for Xml Tools (not general functions) |
5 |
|
6 |
#include "util.h" |
7 |
#include "xmlfilter.h" |
8 |
#include "libs/pugixml.hpp" |
9 |
|
10 |
namespace UtilXmlTools{ |
11 |
|
12 |
QStringList getAllXmlFilesByWildcard(const QString &wildcard); |
13 |
QStringList getAllPatchFilesByWildcard(const QString &wildcard); |
14 |
void backupFile(const QString &file); |
15 |
void getAllNamedElements(pugi::xml_node &node, QList<pugi::xml_node> &result, XmlFilter &filters); |
16 |
void displaySuccessMessage(const int numberOperations, const QString &operation); |
17 |
void displayErrorMessage(const QString& operation, const QString &message, bool exitProgram=true); |
18 |
pugi::xml_node getFirstNamedElements(pugi::xml_node &node, XmlFilter &filters); |
19 |
|
20 |
//// inline functions |
21 |
|
22 |
inline void loadXmlFile(const QString &file, pugi::xml_document &document, pugi::xml_node &rootNode, bool backupsEnabled, const QString &operationForErrorMessage){ |
23 |
|
24 |
pugi::xml_parse_result result = document.load_file(file.toLatin1().constData()); |
25 |
rootNode=document.root(); |
26 |
|
27 |
if(result.status==pugi::status_ok){ |
28 |
std::cout << "File '" << file.toLatin1().constData() << "' loaded with sucess." << std::endl; |
29 |
} |
30 |
else{ |
31 |
UtilXmlTools::displayErrorMessage(operationForErrorMessage,"An error ocurred while loading '" +file + "' XML file\n" + result.description()); |
32 |
} |
33 |
|
34 |
if(backupsEnabled){ |
35 |
UtilXmlTools::backupFile(file); // bake a backup of the file. |
36 |
} |
37 |
|
38 |
} |
39 |
|
40 |
inline void saveXmlFile(const QString &file, pugi::xml_document &document, const QString &operationForErrorMessage){ |
41 |
if(!document.save_file(file.toLatin1().constData(), "\t", pugi::format_indent | pugi::format_save_file_text | pugi::format_no_escapes)){ // output as the system new lines ending |
42 |
UtilXmlTools::displayErrorMessage(operationForErrorMessage,"An error ocurred while saving '" + file + "' XML file"); |
43 |
} |
44 |
} |
45 |
|
46 |
//inline void checkIfValidXmlFile(const QString &file){ |
47 |
// if(!file.endsWith(".xml",Qt::CaseInsensitive)){ |
48 |
// std::cout << "Tried to load a non xml file: '" << Util::toCstr(file) << "'. XmlTools only work over XmlFiles." << std::endl; |
49 |
// exit(1); |
50 |
// } |
51 |
//} |
52 |
|
53 |
} |
54 |
|
55 |
#endif // UTILXMLTOOLS_H |