QT读取html文件段落文字


<html>
<head>
<meta charset="utf-8">
<title>信息title>
head>
<body>
    <P>获取帮助P>
    <img src="/media/Picture/info.jpg" alt="Pulpit rock"width="100" height="100">
body>
html>

请问QT怎样只读取到获取帮助这段文字?

您可以使用 Qt 的 QDomDocument 类来解析 HTML 文件,然后使用 QDomElement 类访问文档中的元素。

以下是一个示例代码,演示如何使用 QDomDocument 和 QDomElement 类读取 HTML 文件中的段落文本:


#include <QFile>
#include <QDomDocument>
#include <QDomElement>
#include <QDebug>

int main()
{
    // 打开 HTML 文件
    QFile file("example.html");
    if (!file.open(QIODevice::ReadOnly))
        return -1;

    // 解析 HTML 文件
    QDomDocument doc;
    if (!doc.setContent(&file)) {
        file.close();
        return -1;
    }
    file.close();

    // 获取 body 元素
    QDomElement body = doc.documentElement().firstChildElement("body");

    // 获取第一个 p 元素
    QDomElement p = body.firstChildElement("p");

    // 输出 p 元素的文本内容
    QString text = p.text();
    qDebug() << text;

    return 0;
}

这个示例代码打开一个名为 example.html 的 HTML 文件,解析其中的内容,并找到第一个

元素,然后输出这个元素的文本内容。

请注意,在实际使用中,您需要根据 HTML 文件的实际内容来修改这个示例代码,以适应不同的 HTML 结构。

以下答案引用自GPT-3大模型,请合理使用:

实例。
答:可以使用QtXml模块进行处理,具体代码如下:

#include <QtXml>
#include <QFile>
 
//从html文件中读取内容
QString readFromHtml(QString filePath)
{
    QString content;
  
    //创建文件对象
    QFile file(filePath);
  
    if(file.open(QFile::ReadOnly|QFile::Text))
    {
        //定义QDomDocument文档对象
        QDomDocument document;
  
        //定义错误对象
        QDomNode node;
        QDomElement element;
        QString strError;
        int row = 0, column = 0;
        bool isSuccess=document.setContent(&file,false, &strError,&row, &column);
        if(isSuccess == false)
        {
            qDebug("paser file failed !");
            file.close();
            return NULL;
        }
  
        //定义文档节点
        QDomElement root = document.documentElement();
 
        //定义子节点
        QDomNode childNode = root.firstChild();
 
        //循环读取文档节点信息
        while(!childNode.isNull())
        {
            element = childNode.toElement();
            node = element.firstChild();
            if(node.isText())
            {
                content = node.toText().data();
            }
            childNode = childNode.nextSibling();
        }
        file.close();
    }
    return content;
}

int main (int argc, char *argv[]) 
{ 
    //html文件路径
    QString filePath("./htmlFile.html");
    
    //读取文字内容
    QString content = readFromHtml(filePath);
    qDebug() << content;
   
    return 0; 
}

如果我的回答解决了您的问题,请采纳我的回答

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:Qt之解析HTML 也许有你想要的答案,你可以看看

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^