我尝试从 Qt 中的网页获取一些数据。由于QWebKit 未维护,我想使用QXmlStreamReader
它,但我收到一些网页的错误消息。
例如:XML Parse Error "Opening and ending tag mismatch."
在http://www.google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.de/?gfe_rd=cr&ei=toP_WMrVKoHKXuvxnsAO">here</A>.
</BODY></HTML>
我得到HTML
,HEAD
和.meta
TITLE
有效 html 页面上的其他错误消息:
- XML 解析错误“预期为 '-' 或 'DOCTYPE',但得到了 '[a-zA-Z]'。”
- XML 解析错误“未声明实体 'raquo'。”
这是我的代码:
webpage = new QXmlStreamReader(data);
//emit got_webpage(&QString(data));
QStringList test;
while (!webpage->atEnd() && !webpage->hasError())
{
QXmlStreamReader::TokenType token = webpage->readNext();
if (token == QXmlStreamReader::StartDocument)
continue;
if (token == QXmlStreamReader::StartElement)
{
test << webpage->name().toString();
/*if (webpage->name() == "H1")
{
emit got_webpage(webpage)
}*/
}
}
emit got_webpage(&test.join("\n"));
if (webpage->hasError())
{
// TODO: Error handling...
qDebug() << "XML Parse Error " << webpage->errorString();
}
webpage->clear();
delete webpage;