Как мне конвертировать QDomElement в json? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть файл XML, который состоит из нескольких тегов 'DATA'. Я хотел бы записать содержимое каждого 'DATA' в отдельные файлы JSON . В настоящее время я создал documentElement из файла XML. Любая помощь будет оценена.

Мой XML-файл выглядит так:

<?xml version='1.0' encoding='UTF-8'?>
<data>
  <student>
    <name>Alice</name>
    <mark>
      <language>96</language>
      <maths>45</maths
    </mark>
  </student>
    <name>Bob</name>
    <mark>
      <language>80</language>
      <maths>75</maths
    </mark>
  </student>
</data>

Ожидаемый результат: file1.json ->

{
  "name":"Alice",
  "mark":[
           {"language":96},
           {"maths":45}
         ]
}

1 Ответ

0 голосов
/ 26 марта 2019

Чтобы сохранить данные в JSON, вам нужно использовать QJsonDocument

. Вы можете получить все теги XML по их имени.

Например:

// In your code:
writeXMLElements(oXMLDomELement, "name", "myfilepath");

// then use these functions to iterate the DOM elements and to store the data in JSON file
void AQWireXQtDomParser::wirteXMLElements(const QDomElement & oXMLContent, const QString & oTagName, const QString & oFileName)
{
    QDomNodeList oXMLElementsLis = oXMLContent.elementsByTagName(oTagName);

    for (int i = 0; i<oXMLElementsLis.size();++i )
    {
        QDomNode oNode = oXMLElementsLis.at(i);
        writeData(oNode.toElement(), QString("filpath_%1").arg(i)); // store in new  file name
    }

}

 void writeData(const QDomElement & oXMLContent, const QString & oFileName)
 {
     QJsonDocument oDocument;
     QJsonObject oObj;
     // store the XML content to JSON object.
     oObj.insert("xml_content", oXMLContent.text()); // key, value
     oDocument.setObject(oObj);

     // save JSON content to a local file
     QFile oJsonFile(oFileName);
     oJsonFile.open(QFile::WriteOnly);
     oJsonFile.write(oDocument.toJson());
 }
...