[英]What's the fastest way to deserialize and serialize an xml document?
我正在使用Java 6並處理一些非常大的xml文檔...我需要解析它們並修改一些值,然后序列化回磁盤。
我使用org.w3c.DOM反序列化xml文檔並修改了一些屬性值,並使用JAXP Transformer序列化了已更改的dom文檔。 但是我發現它真的很慢...
所以我想知道是否有更有效的方法來序列化dom文檔或處理大型xml文檔?
更新:
我使用了一個計時器來記錄每個零件花費的時間,以下是序列化的時間:
// serialize the updated DOM
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
long t0 = timer.currentTimeMillis();
DOMSource source = new DOMSource(dom);
StreamResult result = new StreamResult(doc);
transformer.transform(source, result);
long t1 = timer.currentTimeMillis();
Reporter.log("Finished serializing " + doc.getAbsolutePath() + " in " + (((t1 - t0)) / 1000.0f) + " s.", true);
日志顯示:
....
Finished serializing C:\Usrs\Adminstrator\Documents\Docs\InitialDocument_1.xml in 53 s.
您應該考慮使用StAX。 DOM在這里不合適。 您可以在此處查看比較。
http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/SJSXP2.html
您可以參考下面的URL以獲得示例代碼。
最快的方法是StAX。 最簡單的方法是JAXB。
50秒序列化90Kb太瘋狂了。 DOM很慢,但並不慢。 出了點問題,我無法分辨。
但是,將90Kb描述為“大”是嚴重的誤導,而且誤記可能會影響某些答案。
您需要多快? 我的猜測是,諸如XSLT之類的標准轉換機制已經足夠快。
另一個相關因素是,您需要對內容進行哪些更改? 在很大程度上取決於所需邏輯的復雜性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.