使用QtWebKit显示,同时解析xml
问题描述:
我希望使用QtWebKit来加载显示的url,但是,这很容易,我可以做到这一点。我想要做的就是记录/日志xml。我的注意力是通过记录这些细节来动态记录和数据库中的某些细节。使用QtWebKit显示,同时解析xml
我的问题是,如何在不需要从服务器请求两次相同的url的情况下,一次为xml,第二次查看url。
我希望在这里实现一种记录设置数据的非常快速的方式,当用户通过它时。举个例子,而不是必须输入网站显示的详细信息,我希望在用户浏览网站时将这些详细信息塞入数据库中。
现在,我正在使用QtWebKit,并且我已经很好地解决了查看智能问题。我有一个loadUrl()例程,它调用qwebview.h中的加载(url)
问题是,我如何捎带XML解析在此之上?
答
在你的loadUrl中,使用Qt已经提供的HTTP下载工具(QNetworkRequest和friends)自己下载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 – 2010-05-04 14:48:36
好吧,所以,作为一个例子,我看了一下位于sourceviewer中的arora代码,它基本上与我将要做的接近,它的写法是这样的: [code] m_request = new QNetworkRequest(url); m_request-> setAttribute(QNetworkRequest :: CacheLoadControlAttribute, QNetworkRequest :: PreferCache); m_reply = BrowserApplication :: networkAccessManager() - > get(* m_request); connect(m_reply,SIGNAL(finished()),this,SLOT(loadingFinished()));我知道包括喜欢的高速缓存位,我甚至可以使用反向函数 – 2010-05-05 02:36:29