QDomDocument 不会插入 QDomElement

xx7*_*aBs 2 c++ xml qt dom qtxml

我正在用 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);
Run Code Online (Sandbox Code Playgroud)

但是如果我自己创建 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);
Run Code Online (Sandbox Code Playgroud)

谁能向我解释为什么我需要使用 createElement 方法?

谢谢 :)

And*_*uel 5

基本上 DomElement 创建需要 QDomDocument 具有的信息。来自 Qt 4.7 文档

由于元素、文本节点、注释、处理指令等不能存在于文档的上下文之外,因此文档类还包含创建这些对象所需的工厂函数。创建的节点对象有一个 ownerDocument() 函数,该函数将它们与创建它们的上下文中的文档相关联。

http://doc.qt.io/archives/qt-4.7/qdomdocument.html#details(第三段)