使用QDomDocument设置内部HTML



如何在QDomElement中设置内部HTML ?

当我使用QWebElement我有方法QWebElement::setInnerXml,有一些类似的方法在QDomElement?

没有API将XML片段作为文本"注入"到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对象中创建该代码的代码。

相关内容

  • 没有找到相关文章

最新更新