1

如何在 QDomElement 中设置内部 HTML?

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

4

2 回答 2

2

没有 API 可以将 XML 片段作为文本“注入”到 QDomDocument(或 QXmlStreamWriter)中。必须使用 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 回答