2012-02-07 27 views
1

你好夥伴開發...只是爲了確保,我要問這個問題一個文件:SAX解析器,並從聯播網,

如何XML SAX解析器訪問.xml文件被解析?它是否從給定的URL下載整個文件?

有沒有破解解析的任何用法,以便我們可以保存一些千字節的數據?

想象一個帶有訂購商品的大型.xml文件。我們只需要從頂部的幾個項目,其他項目可能已經被處理和存儲。當我在特定點停止解析時,我會保存一些數據(當然,我會節省一些時間)。

感謝您的回答。

回答

1

SAX解析器實現以多種語言存在,答案可能是特定於實現的。但至少常見的Java實現可以從流中讀取xml,而不需要下載整個東西。

一個Java SAX解析器的調用從URL解析通常類似於

 SAXParserFactory spf = SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 
     MyHandler handler = new MyHandler(); 
     xr.setContentHandler(handler); 
     xr.parse(new InputSource(sourceUrl.openStream())); 

在處理MyHandler是你定義實現org.xml.sax.ContentHandler類(最容易通過擴展org.xml.sax.helpers.DefaultHandler)和sourceURLjava.net.URL爲URL。

當然,這一切都被封閉在一個try-catch ...

你的處理程序可以拋出一個異常信號,它已經達到了你想要什麼解析結束,並通過捕獲該異常,您的程序可以乾淨地完成而不需要讀取整個流。

+0

謝謝,我在想Java的實現......只是想確定一下,你有沒有任何文件或比較支持它? – Hawk 2012-02-07 12:30:44

+0

我有支持關於標準Java實現的聲明的代碼。在最新的編輯中看到片段。 – 2012-02-07 13:03:02

+0

我明白了......非常感謝你:) – Hawk 2012-02-07 14:10:51