17 #pragma warning(disable : 4786)
36 std::string error_msg =
"Error during parsing" + cause + +
"\nerror message is:\n" + msg +
37 "\nat line:" + std::to_string(
static_cast<long long>(err_line)) +
38 " at column:" + std::to_string(
static_cast<long long>(err_col));
50 int err_line = 0, err_col = 0;
52 if (!file.open(QIODevice::ReadOnly))
54 std::string error_msg =
"Error on opening " + filepath.toStdString();
58 if (!doc.setContent(&file, &msg, &err_line, &err_col))
60 std::string cause =
" of: " + filepath.toStdString();
74 int err_line = 0, err_col = 0;
75 if (!doc.setContent(xml_content, &msg, &err_line, &err_col))
88 QDomImplementation domImpl;
92 QString qualifiedName =
"Tympan";
93 QString systemId =
"Tympan.dtd";
94 QDomDocumentType docType = domImpl.createDocumentType(qualifiedName, QString(), systemId);
123 QDomNodeList ext_elements =
_domDocument.documentElement().elementsByTagName(QString(
"ExternalElement"));
125 while (processed < ext_elements.length())
127 QDomNode ext_element = ext_elements.item(processed);
128 QDomNamedNodeMap attrs = ext_element.attributes();
129 if (attrs.contains(QString(
"filename")))
131 QString ext_filepath = attrs.namedItem(QString(
"filename")).nodeValue();
133 QDir dir = QFileInfo(fileName).absoluteDir();
134 ext_filepath = dir.filePath(ext_filepath);
146 QDomNodeList elements = extdoc.documentElement().childNodes();
147 if (elements.isEmpty())
150 ext_filepath.toStdString().c_str());
154 QDomNode parent = ext_element.parentNode();
159 parent.replaceChild(elements.item(0), ext_element);
160 for (
int j = 0; j < elements.length(); j++)
162 parent.appendChild(elements.item(j));
169 "XML project contains an external element defined without a file name");
172 ext_elements =
_domDocument.documentElement().elementsByTagName(QString(
"ExternalElement"));
193 int nodecount = nodeList.length();
198 for (
int i = 0; i < nodecount; i++)
207 str += nodeList.item(i).nodeName();
221 readOk = pElt->
fromXML(nodeList.item(i).toElement());
224 eltCollection.push_back(pElt);
233 \n\t\t*** CAUSE PROBABLE : MACHINE OU BATIMENT EN DOUBLON (MEME ID) ***\
234 \n\t\t\t\t*** INTEGRITE DES RESULTATS COMPROMISE ***\
235 \n\t\t\t\t\t\t*** REFAIRE LES CALCULS ***\n\n");
295 if (node.nodeName() ==
"Version")
297 node = node.nextSibling();
307 eltType += node.nodeName();
315 for (
unsigned int i = 0; i < eltCollection.size(); i++)
347 for (
unsigned int i = 0; i < nodeList.length(); i++)
std::vector< LPTYElement > LPTYElementArray
void handle_xml_parsing_error(std::string cause, std::string msg, int err_line, int err_col)
QDomDocument parse_xml_file(const QString &filepath)
QDomDocument parse_xml_content(const QString &xml_content)
static QString saveNodeToString(DOM_Node &nodeToSave)
Methode pour la sauvegarde d'un noeud DOM dans une string XML.
static int saveNodeToFile(DOM_Node &nodeToSave, const char *fileName)
La methode principale pour la sauvegarde d'un noeud DOM dans un fichier XML.
virtual void error(const char *message,...)
static OMessageManager * get()
virtual void info(const char *message,...)
static OPrototype * findAndClone(const char *className)
static void setLogInstances(bool log)
virtual DOM_Element toXML(DOM_Element &domElement)
static void purgeInstances()
virtual int fromXML(DOM_Element domElement)
static QString _savedFileName
Le nom de fichier pdt la sauvegarde (util pour l'enregistrement du topofile en relatif.
int save(QString fileName)
int load(const QString &fileName, LPTYElementArray &eltCollection)
int getEltType(const QString &fileName, QString &eltType)
void createDoc(QString docName, QString version)
int addElement(TYElement *pElt)
DOM_Document _domDocument
Le document XML.
DOM_Element _rootElement
L'element racine du document XML.
int loadFromString(const QString &xmlString, LPTYElementArray &eltCollection)
int addElements(LPTYElementArray &eltCollection)
void create_tyelements(LPTYElementArray &eltCollection)
Utilities to handle exceptions and to pretty-print value.
The base exception class for errors due to invalid data.