2013-12-19 45 views
1

我發佈了下面的問題,試圖使用QDomDocument類。我被建議使用QWebkit,但我很困惑如何做我需要做的與QWebkit。我以前從未使用過它,所以我很不確定它。任何人都可以提供任何建議嗎?謝謝! 爲了記錄,該函數使用的QByteArray在翻譯成文本時是一個標準的HTML文件。使用QWebkit檢索具有特定類的div


原題:

我有不同類別的HTML文件數的div,像這樣:

<div class='A'>...</div> 
<div class='B'>...</div> 
<div class='C'>...</div> 

我有一個Qt(4.7)計劃,我需要能夠根據班級獲得某個特定的分數。我需要在這個程序中使用QDomDocument。我從文檔中知道該類有一個函數elementById(),但是我無法使用類來處理,只是標識符。這不是一個HTML文件或任何東西,所以我不能控制它是類還是id。有沒有辦法做到這一點,我失蹤了?謝謝!

回答

2

的.pro

QT += webkitwidgets 

的main.cpp

#include <QApplication> 
#include <QDebug> 
#include <QWebView> 
#include <QWebFrame> 
#include <QWebElement> 

int main(int argc, char *argv[]) { 
    QApplication a(argc, argv); 

    QString l_html("<html><body>" 
        "<div class='A'>div with class A</div>" 
        "<div class='B'>div with class B</div>" 
        "<div class='C'>div with class C</div>" 
        "<span class='A'>span with class A</span>" 
        "</body></html>"); 

    QWebView l_webView; // you can skip the QWebView if you dont want to show any widget 
    l_webView.page()->mainFrame()->setHtml(l_html); 
    QWebElement l_root(l_webView.page()->mainFrame()->documentElement()); 
    QWebElementCollection l_elements(l_root.findAll(".a")); 

    foreach (QWebElement l_e, l_elements) { 
     // do what you want here 
    } 

    return a.exec(); 
} 
+0

謝謝,我想這一點,但QWebElementCollection l_elements保持返回什麼:(有),另一個用於arguement的findAll(可能工作更好嗎? – thnkwthprtls

+0

@thnkwthprtls我給出的代碼正在工作,只需在這個foreach中放一個'qDebug()<< l_e.toOuterXml();'關於「其他參數」,你可以把w你想要的憎恨CSS選擇器。 –

+0

噢好吧,這是我做錯了一部分,我誤解了findAll參數的含義,看起來像現在起作用。謝謝! – thnkwthprtls

相關問題