【问题标题】:Display using QtWebKit, whilst parsing xml使用 QtWebKit 显示,同时解析 xml
【发布时间】:2010-05-04 01:13:18
【问题描述】:

我希望使用 QtWebKit 加载一个 url 进行显示,但是,这是简单的部分,我可以做到。我想做的是边走边记录/记录 xml。我在这里的注意力是通过记录这些细节来动态记录和数据库化某些细节。

我的问题是,如何即时完成这一切,而不需要从服务器两次请求相同的 url,一次用于 xml,第二次用于查看 url。

我的希望是实现一种非常快速的方式来记录用户经过的集合数据。举个例子,与其输入网站显示的详细信息,我希望在用户查看网站时将这些详细信息存入数据库。

现在,我正在使用 QtWebKit,并且我已经解决了所有问题。我有一个 loadUrl() 例程,它在 qwebview.h 中调用 load(url)

问题是,我如何在此之上搭载 xml 解析?

【问题讨论】:

    标签: c++ html xml parsing qtwebkit


    【解决方案1】:

    在您的 loadUrl 中,使用 Qt 已经提供的 HTTP 下载工具(QNetworkRequest 和朋友)自己下载 url。

    一旦你得到数据,解析并记录它并使用:

    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() 获取内容,您可以对其进行解析和随心所欲地记录。

    【讨论】:

    • 好的,上面的内容听起来不错,唯一有意义的可能是在这个页面中使用了框架。我第一次尝试做这一切是在 Visual Studio 中,但我发现只有加载的第一帧可以使用,之后我失去了对它的控制。但我有一种感觉,这次我会过得更好。我将尝试先将文件写入磁盘,然后使用 setHTML 加载它。此外,还会涉及到 javascript,但它不是解析所必需的。好吧,交叉手指,我走了:P
    • 好的,所以,作为一个例子,我看了一下位于 sourceviewer 中的 arora 代码,它与我正在做的事情基本接近,它是这样写的:[code] m_request = new QNetworkRequest(url); m_request->setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); m_reply = BrowserApplication::networkAccessManager()->get(*m_request);连接(m_reply,信号(完成()),这个,SLOT(加载完成())); m_reply->setParent(this);[/code] 我理解的 m_request 包括首选缓存位,我什至可以使用逆向
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多