Отображение с использованием QtWebKit при разборе xml - PullRequest
0 голосов
/ 03 мая 2010

Я хочу использовать QtWebKit для загрузки URL для отображения, но это простая часть, я могу это сделать. То, что я хочу сделать, это записывать / регистрировать XML на ходу. Мое внимание здесь заключается в том, чтобы записывать и регистрировать некоторые детали на лету, записывая эти детали.

Моя проблема в том, как сделать все это на лету, не запрашивая один и тот же URL-адрес с сервера дважды, один раз для xml и второй раз для просмотра URL-адреса.

Я надеюсь, что здесь будет реализован очень быстрый способ записи данных набора, когда пользователь пропускает их. Возьмем, к примеру, вместо того, чтобы печатать информацию, отображаемую на веб-сайте, я хочу, чтобы эти данные были добавлены в базу данных, когда пользователь просматривает веб-сайт.

Теперь я использую QtWebKit, и у меня все довольно хорошо решено при просмотре. У меня есть подпрограмма loadUrl (), которая вызывает load (url) внутри qwebview.h

Проблема в том, как мне в дополнение к этому разбирать xml-анализ?

1 Ответ

0 голосов
/ 03 мая 2010

В вашем loadUrl загрузите URL-адрес самостоятельно, используя средства загрузки HTTP, которые Qt уже предоставляет (QNetworkRequest и друзья).

После того, как вы получили данные, проанализируйте и зарегистрируйте их и используйте:

void QWebView::setHtml ( const QString & html, const QUrl & baseUrl = QUrl() )

Чтобы установить его в QWebView вручную. Второй параметр url - это ваш URL, который будет использоваться в качестве базового URL для элементов, на которые ссылаются со страницы.

Если вы не уверены, что скачали html, используйте:

void QWebView::setContent ( const QByteArray & data, const QString & mimeType = QString(), const QUrl & baseUrl = QUrl() )

Вы также можете сделать обратное. Просто вызовите QWebView :: load (url) в вашем методе, и после завершения передачи используйте QWebView :: mainFrame (), чтобы получить основной фрейм, а затем QWebFrame :: toHtml (), чтобы получить контент, который вы можете проанализировать и войдите как хотите.

...