2013-07-12 100 views
0

林需要解析HTML页面,写的所有文本为.txt文件,例如QT解析HTML为TXT文件

<!DOCTYPE html> 
    <html> 
    <body> 

    <h1>My First Heading</h1> 

    <p>My first paragraph.</p> 
    <p>My second paragraph.</p> 

</body> 
</html> 

所以我需要解析p标签,我需要写
我的第一个段落。 我的第二段。

到外部文件

,如果我可以使用QtWebKit的

做,在Qt的我很欣赏你的帮助,任何想法

+0

http://qt-project.org/doc/qt-4.8/examples-xml.html – Huy

+0

http://stackoverflow.com/questions/12913881/parse-a-xml-file-using-c- qt – Huy

+0

这是针对XML的,我是否需要下载网页并运行正则表达式,plz help – David

回答

-1

我认为它总是最好的,如果你真正尝试的东西,并张贴您的代码作为一个起点。但我在工作无聊所以这里去....

下面是一些伪代码杂交:

// To request data from the interwebs. 
QNetworkRequest* request = new QNetworkRequest("http://www.asdf.com"); 
QNetworkAccessManager* networkMgr = new QNetworkAccessManager(); 
QNetworkReply* reply = networkMgr->get(request); 

// Set up signals & slots (Qt4 style) 
QObject::connect(reply, SIGNAL(readyRead()), this, SLOT(readyRead())); 
QObject::connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(error(QNetworkReply::NetworkError))); 

以后,当你得到你的有效载荷,可以读取数据,并将其送入什么Qt的XML解析器你想(QXmlStreamReader和其他人!):

void HttpTest::readyRead() 
{ 
    QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender()); 

    if(reply) 
    { 
    if(reply->error() == QNetworkReply::NoError) 
    { 

    } 
    else 
    { 
     QString html = reply->readAll(); 
     QXmlStreamReader reader(&html); 
     // Parse your xml stuff - search for your <p> node. 
     // ... 

Qt doc examples

stackoverflow has lots

} 
    } 
} 
+0

您不希望“if(reply-> error()!= QNetworkReply :: NoError)”,还是将您的逻辑从ELSE移至IF? –