1

我在下面发布了问题,尝试使用 QDomDocument 类。有人建议我改用 QWebkit,但我很困惑如何用 QWebkit 做我需要做的事情。我以前从未使用过它,所以我不太确定。有人可以提供任何建议吗?谢谢!作为记录,该函数使用的是一个 QByteArray,当它被翻译成文本时是一个标准的 HTML 文件。


原始问题:

我在一个具有不同类的 HTML 文件中有几个 div,如下所示:

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

我有一个 Qt (4.7) 程序,我需要能够根据类从中获得某个 div。我需要在这个程序中使用 QDomDocument。我从文档中知道该类有一个 function elementById(),但我不能让它与类一起工作,只是 ids。这不是一个制作的 HTML 文件或任何东西,所以我无法控制它是类还是 id。有没有办法做到这一点,我错过了?谢谢!

4

1 回答 1

2

.pro

QT += webkitwidgets

主文件

#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();
}
于 2013-12-19T20:01:58.503 回答