QDomDocument не будет вставлять QDomElement - PullRequest
2 голосов
/ 27 июля 2011

Я что-то делаю с 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 Ответ

4 голосов
/ 27 июля 2011

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

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

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

...