Sept. 6, 2019, 2:44 a.m.

Как создать вот такой тег?

Всем добрый день.

Есть вот такой xml-тег:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dmodule  [
  <!ENTITY ICN-C0419-S1000D0379-001-01 SYSTEM "ICN-C0419-S1000D0379-001-01.CGM" NDATA cgm >
  <!ENTITY ICN-C0419-S1000D0380-001-01 SYSTEM "ICN-C0419-S1000D0380-001-01.CGM" NDATA cgm >
  <!ENTITY ICN-C0419-S1000D0381-001-01 SYSTEM "ICN-C0419-S1000D0381-001-01.CGM" NDATA cgm >
  <!NOTATION cgm PUBLIC "-//USA-DOD//NOTATION Computer Graphics Metafile//EN" >
]>

Как вставить первый тег

<?xml version="1.0" encoding="UTF-8"?>

я знаю и делаю это вот так

QDomDocument doc(descrname);
    doc.appendChild(doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""));

Но как получить следующий тег? Ведь он, по факту является составным, судя из наполнения.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
9

Неужели никто не формировал что-то подобное?

Советую глянуть ,что-то похожее есть вот тут

Хорошо, давайте попробую переиначить вопрос.
Я создаю документ с помощью QDomDocument

QDomDocument doc("namedoc");
doc.appendChild(doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""));

Затем кладу это все в файл и в результате получаю xml-файл следующего содержания

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE namedoc>
<namedoc>
.....
</namedoc>

Как в строку

<!DOCTYPE namedoc>

добавить еще и вот это

[
  <!ENTITY ICN-C0419-S1000D0379-001-01 SYSTEM "ICN-C0419-S1000D0379-001-01.CGM" NDATA cgm >
  <!ENTITY ICN-C0419-S1000D0380-001-01 SYSTEM "ICN-C0419-S1000D0380-001-01.CGM" NDATA cgm >
  <!ENTITY ICN-C0419-S1000D0381-001-01 SYSTEM "ICN-C0419-S1000D0381-001-01.CGM" NDATA cgm >
  <!NOTATION cgm PUBLIC "-//USA-DOD//NOTATION Computer Graphics Metafile//EN" >
]

Все примеры, которые были мной найдены и просмотрены ограничиваются применением классов QDomDocument, QDomElement, QDomAttr, QDomNode. С этим у меня проблем не возникает. Но как сложить тег, который я написал примеров подобных нет.

QJsonDocument jsDocument = QJsonDocument::fromJson(array);

    if (jsDocument.isEmpty())
        qDebug()<<"Empty document!";
    else {
        QList<QSharedPointer<Posts>> m_postList;
        QJsonArray jArray = jsDocument.array();

        foreach (const QJsonValue& value, jArray) {
            QJsonObject object = value.toObject();
            Posts elemList;
            elemList.setUserId(object.value("userId").toInt());
            elemList.setTitle(object.value("title").toString());
            elemList.setBody(object.value("body").toString());

            m_postList.append(QSharedPointer<Posts>::create(elemList));
        }
        OfflineDataManager::instance().insertAll(m_postList);
        emit baseWriteReady();
    }

я с xml еще не пробовал рабоать , но Json я вот так парсил по ключам, а если у тега были еще дочерние теги, то я дополнительный цикл foreach делал

в двойном цикле проверить , если у текущего тега чайлды и их в цикле записывать пока не конец, переходить на следующий тег(получится что то вроде )

foreach(const QXmlValue , node){
      по ключю обращаемся к текущему Node
      foreach(const QXmlNode, valu){
              заполняем Node дочерними элементами
          }
      }

Если у вас ничего не получится - пишите , попробую сделать

Тут тег только один и в него в качестве атрибутов записано то, что я написал выше. Так же я не совсем понимаю, как к этому тегу обратиться, потому что он создается вот здесь, по-умолчанию

QDomDocument doc("namedoc");

С парсингом у меня проблем нет, правда я еще не парсил эту информацию.

Это вам нужно в сторону сериализации и десиреализации копать(что то типо попробуйте создать класс с полями как в тегах, и с ними работать как с QList обьектов )

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Looking for a Job?
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

For registered users on the site there is a minimum amount of advertising

JuA
Sept. 17, 2019, 8:51 a.m.
Julija Aleksandrova

C++ - Test 001. The first program and data types

  • Result:33points,
  • Rating points-10
JuA
Sept. 17, 2019, 8:36 a.m.
Julija Aleksandrova

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:10points,
  • Rating points-10
VD
Sept. 16, 2019, 11:47 a.m.
Viktor Dzen'kiv

C++ - Test 002. Constants

  • Result:75points,
  • Rating points2
Last comments
Sept. 17, 2019, 6:07 a.m.
Misha Lebedev

Кстати интересные темы нашёл тут https://emacsway.github.io/ru/django-framework/#django-models Может что полезного тоже Евгений найдёте
Sept. 17, 2019, 4:50 a.m.
Misha Lebedev

Доброго времени суток. Спасибо за хороший ответ, У меня ситуация така что в галлереи будет несколько миллионов фотографий с фильтрами и тегами , и я опасаюсь за производительност . Это ос…
Sept. 17, 2019, 3:23 a.m.
Evgenij Legotskoj

Добрый день. Да, я тоже читал ту статью в своё время и согласен с тем, что внешние ключи гораздо лучше, чем GenericForeignKey. Выборки в ряде случае работают быстрее. Но лично мне про…
Sept. 14, 2019, 5:08 p.m.
Misha Lebedev

Приветствую вас Евгений , давно наблюда за развитием вашего замечательного портала, много полезно тут нашел , переодически зачитываюсь. Теперь по сушеству, делаю портал и там идеально ложи…
Sept. 10, 2019, 4:38 p.m.
Evgenij Legotskoj

function view для модели Article и LikeDislike.LIKE будет выглядеть так def like(request, pk): obj = Article.objects.get(pk=pk) try: likedislike = LikeDislike.objects.get(cont…
Now discuss on the forum
p
Sept. 17, 2019, 5:02 a.m.
pstMem

Да, действительно нужно дебажить, по другому не словить исключение. Уже решил проблему, был выход за предел массива, не правильные входные данные, так что всегда проверяйте размер массива.
Sept. 17, 2019, 3:39 a.m.
Evgenij Legotskoj

Добрый день! На удалённом сервере вряд ли. Этот класс из core модуля, а удалённый сервер - это ещё и network модуль нужно подтягивать. Тут на удалэнном сервере нужно делать программу…
Sept. 17, 2019, 3:30 a.m.
Evgenij Legotskoj

Добрый день! Попробуйте toHex() А также создние QString с помощью from методов. Может быть QString::fromLatin1(). В документации на QString почти два десятка методов from, один из них…
m
Sept. 16, 2019, 1:54 p.m.
mihamuz

Однозначно PostgreSql не ниже 10 ки.
R
Sept. 16, 2019, 7:09 a.m.
RED_Spider

прочитайте https://doc.qt.io/archives/qt-5.11/osx-deployment.html QMAKE_POST_LINK += "~/Qt/5.12.0/clang_64/bin/macdeployqt $${TARGET}.app $$escape_expand( \\n\\t )"
EVILEG
About
Services
© EVILEG 2015-2019
Recommend hosting TIMEWEB