36 QDomDocument doc(
"xmlInput");
39 if (!file.open(QIODevice::ReadOnly)) {
40 QString message = QString(
"Failed to open file for XML Input: [%1]").arg(xmlFile);
46 if (!doc.setContent(&file, &errMsg, &errLine, &errCol)) {
48 QString message = QString(
"Failed to use file for XML Input: [%1]. %2 at line %3, column %4").arg(xmlFile).arg(errMsg).arg(errLine).arg(errCol);
96 std::string cleanTagName = element.tagName().replace(
":",
"_").toStdString();
98 if (element.hasAttributes()) {
101 json attributeSection;
102 QDomNamedNodeMap attrMap = element.attributes();
103 for (
int i=0; i < attrMap.size(); i++) {
104 QDomAttr attr = attrMap.item(i).toAttr();
105 attributeSection[
"attrib_"+attr.name().toStdString()] = attr.value().toStdString();
109 if (!element.text().isEmpty()) {
110 attributeSection[
"_text"] = element.text().toStdString();
112 newJson[cleanTagName] = attributeSection;
117 if (!element.text().isEmpty()) {
118 newJson[cleanTagName] = element.text().toStdString();
122 newJson[cleanTagName];
150 while (!element.isNull()) {
151 std::string cleanTagName = element.tagName().replace(
":",
"_").toStdString();
152 QDomElement next = element.firstChildElement();
155 if (!converted.is_null()) {
157 if (!output.contains(cleanTagName)) {
158 output[cleanTagName] = converted[cleanTagName];
164 if (!output[cleanTagName].is_array()) {
165 json repeatedArray = json::array();
166 repeatedArray.push_back(output[cleanTagName]);
167 output[cleanTagName] = repeatedArray;
169 output[cleanTagName].push_back(converted[cleanTagName]);
182 if (output.contains(cleanTagName)) {
184 if (!output[cleanTagName].is_array()) {
185 json repeatedArray = json::array();
186 repeatedArray.push_back(output[cleanTagName]);
187 output[cleanTagName] = repeatedArray;
189 output[cleanTagName].push_back(temporaryJson);
192 if (element.hasAttributes()) {
193 QDomNamedNodeMap attrMap = element.attributes();
194 for (
int j=0; j < attrMap.size(); j++) {
195 QDomAttr attr = attrMap.item(j).toAttr();
196 temporaryJson[
"attrib_"+attr.name().toStdString()] = attr.value().toStdString();
199 output[cleanTagName] = temporaryJson;
202 element = element.nextSiblingElement();