2014-01-28 20 views
2

在我的GWT應用程序中,我從REST服務器檢索XML數據。我正在使用Piriti XML解析器https://code.google.com/p/piriti/wiki/Xml來反序列化對象並在表中顯示。只要我們返回1000條記錄,一切都很好,但是隻有掛起並且提供用戶消息才能停止運行在後面的java腳本。有人可以幫助我找到在GWT中處理大數據的最佳方法,或者更準確地說,是解析GWT中的大XML文件的最佳方法。如何在GWT中解析大數據(XML)

非常感謝您的所有建議。

+0

是否可以創建一個分頁表並且一次僅使用一些數據? [GWT CellTable示例](http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCellTable) – mdl

+0

是的,我創建分頁表,但實際的問題是發生初始化數據提供程序,因爲這是XML解析器正在將記錄轉換成列表 – Ashish

+0

沒有用戶需要在表中記錄數千條記錄。您只應將一頁結果傳遞給客戶端(即數據提供者)。當用戶請求第二頁時,你傳遞第二頁的結果等等。 –

回答

2

問題是解析一個大的XML文檔會降低瀏覽器速度。而且你需要足夠的內存來保存整個DOM以及內存中的映射對象。唯一的解決辦法是避免這種情況。您必須調整您的REST服務才能夠僅向瀏覽器發送小塊數據。所以如果你已經有一個分頁表,你只能在開始時檢索第一頁的數據。如果用戶想要更改該頁面,則執行另一個REST調用以檢索下一頁的數據。

如果您不能更改REST服務本身,您可以創建另一個服務器端服務(在由您控制的服務器上)作爲代理。初次訪問時,您調用原始REST服務,將XML存儲在您自己的服務器上,並允許客戶端僅檢索該XML的部分內容。

+0

非常好說,非常感謝。您可以給我任何示例或鏈接這樣的教程。 – Ashish

+0

嗯,對不起,我恐怕沒有教程來解決這個問題。但是你可以將它分解爲幾個簡單的子問題,併爲每個子問題找到一個教程。它不應該太複雜。如果您遇到麻煩,那麼您可以在此尋求幫助以解決特定問題。 – vanje