【发布时间】:2013-04-27 20:36:52
【问题描述】:
如何在 QDomElement 中设置内部 HTML?
当我使用QWebElement时,我有QWebElement::setInnerXml的方法,QDomElement中有一些类似的方法吗?
【问题讨论】:
标签: qt dom qwebelement
如何在 QDomElement 中设置内部 HTML?
当我使用QWebElement时,我有QWebElement::setInnerXml的方法,QDomElement中有一些类似的方法吗?
【问题讨论】:
标签: qt dom qwebelement
没有 API 可以将 XML sn-ps 作为文本“注入”到 QDomDocument(或 QXmlStreamWriter)中。必须使用 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);
请注意,使用了
显然,如果您有来自另一个文档的片段或 XML 作为开始,请忽略在 doc_text 对象中创建该代码的代码。
【讨论】: