qt - QDomDocument 无法使用 <!doctype> 标签设置 HTML 文档的内容

标签 qt dom html-parsing doctype qtxml

当我使用 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 documentationQWebElement documentation .

关于qt - QDomDocument 无法使用 &lt;!doctype> 标签设置 HTML 文档的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11917936/

相关文章:

qt - QDockWidget 不会显示内容

javascript - 使用 Javascript 获取 DOM 中的所有图像

dom - 使用 chrome 进行 Web 开发 - 如何停靠检查器?

javascript - SVG 子节点返回文本

java.net.SocketException : Connection reset error while html parse with Jsoup

xml - 桌面应用程序中的 HTML 使用 iframe 加载页面

c++ - QtCreator IDE不能同时使用IntelliSense和 "auto"类型推断吗?

标签栏顶部的 Qt 样式表奇怪的线条

vue.js - 带有 HTML 消息的 Vue ElementUI MessageBox?

python - 导入最新 Pyside 版本时出现问题