QDomDocument不会插入QDomElement

时间:2011-07-26 20:53:01

标签: 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);

但是如果我自己创建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 个答案:

答案 0 :(得分:4)

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

  

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

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