QDomDocument не будет вставлять QDomElement

Я делаю что-то с XML, и теперь я в замешательстве. Этот код работает отлично:

    QDomElement new_item = doc.createElement(name);

    new_item.setAttribute("type", value.typeName());
    new_item.setAttribute("value", value.toString());

    doc.elementsByTagName(section).at(0).appendChild(new_item);

Но если бы я сам создал QDomElement (без вызова метода createElement), он не вставляется в документ. Что-то вроде этого не работает:

    QDomElement new_item;

    new_item.setTagName(name);
    new_item.setAttribute("type", value.typeName());
    new_item.setAttribute("value", value.toString());

    doc.elementsByTagName(section).at(0).appendChild(new_item);

Может кто-нибудь объяснить мне, почему мне нужно использовать метод createElement?

Спасибо:)

1 ответ

Решение

В основном, для создания DomElement нужна информация, которую имеет QDomDocument. Из документации Qt 4.7

Поскольку элементы, текстовые узлы, комментарии, инструкции по обработке и т. Д. Не могут существовать вне контекста документа, класс документа также содержит фабричные функции, необходимые для создания этих объектов. Созданные объекты узла имеют функцию ownerDocument(), которая связывает их с документом, в контексте которого они были созданы.

http://doc.qt.io/archives/qt-4.7/qdomdocument.html (третий абзац)

Другие вопросы по тегам