首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MSVC 2015用QT5.8中的QXmlStreamReader解析HTML

用MSVC 2015用QT5.8中的QXmlStreamReader解析HTML
EN

Stack Overflow用户
提问于 2017-04-25 17:17:35
回答 1查看 994关注 0票数 0

我试图从Qt中的网页中获取一些数据。由于QWebKit未维护,我想使用QXmlStreamReader,但它得到了一些网页的错误信息。

例如:XML Parse Error "Opening and ending tag mismatch." at http://www.google.com

代码语言:javascript
复制
<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&amp;ei=toP_WMrVKoHKXuvxnsAO">here</A>.
</BODY></HTML>

我得到了HTMLHEADmetaTITLE

有效html页面上的其他错误消息:

  • XML解析错误“预期”或“DOCTYPE”,但得到了“a”。
  • XML解析错误“实体'raquo‘未声明。”

这是我的密码:

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-25 19:53:39

顾名思义,QXmlStreamReader是用来解析XML的。HTML不是基于XML的,因此不能用QXmlStreamReader进行解析。

也就是说,如果您可以将HTML转换为XHTML,您将能够使用QXmlStreamReader解析它。然而,Qt没有执行此转换的内置方法。可以使用第三方库(如提迪利布 )将任意的HTML转换为XHTML。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43617117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档