QDomElement で内部 HTML を設定するにはどうすればよいですか?
QWebElement を使用している場合、QWebElement::setInnerXmlメソッドがありますが、QDomElement にも同様のメソッドがありますか?
QDomElement で内部 HTML を設定するにはどうすればよいですか?
QWebElement を使用している場合、QWebElement::setInnerXmlメソッドがありますが、QDomElement にも同様のメソッドがありますか?
XML スニペットをテキストとして QDomDocument (または QXmlStreamWriter) に「挿入」する API はありません。API を使用して、プログラムでノードを作成する必要があります。
最初に文字列があると仮定すると、私の現在の解決策は、そこから 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 オブジェクトでそのコードを作成するコードを無視してください。