使用QDomDocument设置内部HTML

时间:2013-05-03 12:28:25

标签: qt dom qwebelement

如何在QDomElement中设置内部HTML?

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

2 个答案:

答案 0 :(得分:2)

没有API将XML片段作为文本“注入”到QDomDocument(或QXmlStreamWriter)中。必须使用API​​并以编程方式创建节点。

答案 1 :(得分: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);

请注意&lt; text&gt;使用标签,以便结果不需要是标签,它可以只是文本,它仍然可以工作。

显然,如果您从另一个文档开始使用片段或XML,请忽略在doc_text对象中创建该代码的代码。