我发布了下面的问题,尝试使用QDomDocument类。我被建议使用QWebkit,但我很困惑如何做我需要用QWebkit做的事情。我之前从未使用它,所以我很不确定它。有人可以提供任何建议吗?谢谢! 对于记录,该函数使用的是QByteArray,当翻译为文本时,它是标准的HTML文件。
原始问题:
我在一个包含不同类的HTML文件中有几个div,如下所示:
<div class='A'>...</div>
<div class='B'>...</div>
<div class='C'>...</div>
我有一个Qt(4.7)程序,我需要能够根据类获得某个div。我需要在这个程序中使用QDomDocument。我从文档中知道该类有一个函数elementById()
,但是我不能用它来处理类,只有id。这不是一个HTML文件或任何东西,所以我无法控制它的类或id。有没有办法做到这一点,我错过了?谢谢!
答案 0 :(得分: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();
}