当我使用 QDomDocument
对于 HTML 内容,如果有 <!doctype html>
则无法设置内容在文档的开头。但实际上为什么呢?!
例如考虑以下代码片段:
QDomDocument doc;
QString content = "<!doctype html><html><body><a href='bar'>foo</a></body></html>";
qDebug() << doc.setContent(content,false,0,0);
QDomElement docElem = doc.documentElement();
QDomNode a = docElem.firstChild();
qDebug() << doc.childNodes().size() << docElem.childNodes().size();
只不过是
false
的列表s 是这段代码的输出!
最佳答案
HTML 是 HTML,XML 是 XML。因此,Qt XML
无法正确解析 HTML 代码。要解析 HTML 文件,请考虑使用 Qt Webkit
模块而不是 Qt XML
模块。要将它包含在您的项目中,您只需添加 QT += webkit
在您的项目文件中。
要解析您的 HTML 数据,您必须执行以下操作:
QString content = "<html><body><a href='bar'>foo</a></body></html>";
QWebPage webPage;
QWebFrame * frame = webPage.mainFrame();
frame->setHtml(content);
QWebElement htmlElement = frame->documentElement(); // Equivalent of the QDomElement
如需更多信息,请参阅 Qt Webkit documentation和 QWebElement documentation .
关于qt - QDomDocument 无法使用 <!doctype> 标签设置 HTML 文档的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11917936/