2013-12-19 34 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

相关问题