6

HTML コンテンツで使用すると、ドキュメントの先頭にQDomDocumentがあるとコンテンツの設定に失敗します。<!doctype html>しかし、実際にはなぜですか?たとえば、次のコード スニペットを考えてみましょう。

 QDomDocument doc;
 QString content = "<!doctype html><html><body><a href='bar'>foo</a></body></html>";
 qDebug() << doc.setContent(content,false,0,0);
 QDomElement docElem = doc.documentElement();
 QDomNode a = docElem.firstChild();
 qDebug() << doc.childNodes().size() << docElem.childNodes().size();

falseこのコードの出力は s のリストだけです!

4

2 に答える 2

7

HTML は HTML、XML は XML です。その結果、Qt XMLHTML コードを正しく解析できません。HTML ファイルを解析するには、Qt Webkitモジュールの代わりにモジュールを使用することを検討してQt XMLください。プロジェクトに含めるにはQT += webkit、プロジェクト ファイルに追加するだけです。

HTML データを解析するには、次のようにする必要があります。

QString content = "<html><body><a href='bar'>foo</a></body></html>";
QWebPage webPage;
QWebFrame * frame = webPage.mainFrame();
frame->setHtml(content);
QWebElement htmlElement = frame->documentElement();    // Equivalent of the QDomElement

詳細については、Qt Webkit のドキュメントおよびQWebElement のドキュメントを参照してください。

于 2012-08-12T00:14:14.437 に答える
0

オプションの引数を使用setContentして、解析エラーが何であるかを調べます。「doctype」の場合と同じくらい単純なものかもしれません。

于 2012-08-11T22:55:22.903 に答える