1

QDomElement で内部 HTML を設定するにはどうすればよいですか?

QWebElement を使用している場合、QWebElement::setInnerXmlメソッドがありますが、QDomElement にも同様のメソッドがありますか?

4

2 に答える 2

2

XML スニペットをテキストとして QDomDocument (または QXmlStreamWriter) に「挿入」する API はありません。API を使用して、プログラムでノードを作成する必要があります。

于 2013-05-03T18:49:49.397 に答える
1

最初に文字列があると仮定すると、私の現在の解決策は、そこから DOM ツリーを生成し、そのツリーをフラグメントにインポートしてから、それらを適切な場所にコピーすることです (インポートが必要なため、中間フラグメントが必要です。と聞かれたら大変失礼です。)

// assuming that 'n' is the node you are replacing or at least inserting after
// 'parent' is the parent of 'n'
// 'result' is the string to replace 'n' or insert after 'n'
QDomDocument doc_text("snap");
doc_text.setContent("<text>" + result + "</text>", true, NULL, NULL, NULL);
QDomDocumentFragment frag(xml.createDocumentFragment());
frag.appendChild(xml.importNode(doc_text.documentElement(), true));
QDomNodeList children(frag.firstChild().childNodes());
const int max(children.size());
QDomNode previous(n);
for(int i(0); i < max; ++i)
{
    QDomNode l(children.at(0));
    parent.insertAfter(children.at(0), previous);
    previous = l;
}
// if you are replacing, then delete node n as well
parent.removeChild(n);

<text> タグが使用されているため、結果がタグである必要はありません。テキストだけでも機能します。

明らかに、別のドキュメントのフラグメントまたは XML を開始する場合は、doc_text オブジェクトでそのコードを作成するコードを無視してください。

于 2013-11-21T01:34:38.603 に答える