2

私は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);

ただし、(createElementメソッドを呼び出さずに)自分でQDomElementを作成すると、ドキュメントに挿入されません。このようなものは機能しません:

    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メソッドを使用する必要がある理由を誰かに説明してもらえますか?

ありがとうございました :)

4

1 に答える 1

5

基本的に DomElement の作成には、QDomDocument が持つ情報が必要です。Qt 4.7 ドキュメントから

要素、テキスト ノード、コメント、処理命令などはドキュメントのコンテキスト外には存在できないため、ドキュメント クラスにはこれらのオブジェクトの作成に必要なファクトリ関数も含まれています。作成されたノード オブジェクトには、それらが作成されたコンテキスト内のドキュメントに関連付ける ownerDocument() 関数があります。

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

于 2011-07-26T21:00:26.410 に答える