2013-07-12 102 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? –