如何在QDomElement中设置内部HTML?
当我使用QWebElement时我有方法QWebElement::setInnerXml,QDomElement中有一些类似的方法吗?
答案 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对象中创建该代码的代码。