6

当我使用HTML 内容时,如果文档开头QDomDocument有 a,则无法设置内容。<!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 列表!

4

2 回答 2

7

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 文档QWebElement 文档

于 2012-08-12T00:14:14.437 回答
0

使用可选参数来setContent找出解析错误是什么。它可能与“doctype”的情况一样简单。

于 2012-08-11T22:55:22.903 回答