国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java中四種XML解析技術之不完全測試

2019-11-18 15:37:42
字體:
來源:轉載
供稿:網友

  在平時工作中,難免會碰到把 xml 作為數據存儲格式。面對目前種類繁多的解決方案,哪個最適合我們呢?在這篇文章中,我對這四種主流方案做一個不完全評測,僅僅針對遍歷 XML 這塊來測試,因為遍歷 XML 是工作中使用最多的(至少我認為)。

  預 備

  測試環境:

  AMD 毒龍1.4G OC 1.5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1.4.1+Eclipse 2.1+Resin 2.1.8,在 Debug 模式下測試。

  XML 文件格式如下:

<?xml version="1.0" encoding="GB2312"?>
<RESULT>
 <VALUE>
 ?。糔O>A1234</NO>
 ?。糀DDR>四川省XX縣XX鎮XX路X段XX號</ADDR>
?。?VALUE>
 <VALUE>
 ?。糔O>B1234</NO>
  <ADDR>四川省XX市XX鄉XX村XX組</ADDR>
?。?VALUE>
</RESULT>
  測試方法

  采用 jsp 端調用Bean(至于為什么采用JSP來調用,請參考:http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx),讓每一種方案分別解析10K、100K、1000K、10000K的 XML 文件,計算其消耗時間(單位:毫秒)。

  JSP 文件:

<%@ page contentType="text/Html; charset=gb2312" %>
<%@ page import="com.test.*"%>

<html>
<body>
<%
String args[]={""};
MyXMLReader.main(args);
%>
</body>
</html>
  測 試

  首先出場的是 DOM(JAXP Crimson 解析器)

  DOM 是用與平臺和語言無關的方式表示 XML 文檔的官方 W3C 標準。DOM 是以層次結構組織的節點或信息片斷的集合。這個層次結構答應開發人員在樹中尋找特定信息。分析該結構通常需要加載整個文檔和構造層次結構,然后才能做任何工作。由于它是基于信息層次的,因而 DOM 被認為是基于樹或基于對象的。DOM 以及廣義的基于樹的處理具有幾個優點。首先,由于樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像 SAX 那樣是一次性的處理。DOM 使用起來也要簡單得多。

  另一方面,對于非凡大的文檔,解析和加載整個文檔可能很慢且很耗資源,因此使用其他手段來處理這樣的數據會更好。這些基于事件的模型,比如 SAX。

  Bean文件:

package com.test;

import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;

public class MyXMLReader{

 public static void main(String arge[]){
  long lasting =System.currentTimeMillis();
  try{
   File f=new File("data_10k.xml");
   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   Document doc = builder.parse(f);
   NodeList nl = doc.getElementsByTagName("VALUE");
   for (int i=0;i<nl.getLength();i++){
    System.out.    System.out.println(" 車主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
  }
  }catch(Exception e){
   e.printStackTrace();
  }
  System.out.println("運行時間:"+(System.currentTimeMillis() - lasting)+" 毫秒");
 }
}
  10k消耗時間:265 203 219 172
  100k消耗時間:9172 9016 8891 9000
  1000k消耗時間:691719 675407 708375 739656
  10000k消耗時間:OutOfMemoryError

  接著是 SAX

  這種處理的優點非常類似于流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由于應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對于大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX 還比它的替代者 DOM 快許多。 選擇 DOM 還是選擇 SAX ?

  對于需要自己編寫代碼來處理 XML 文檔的開發人員來說,選擇 DOM 還是 SAX 解析模型是一個非常重要的設計決策。

  DOM 采用建立樹形結構的方式訪問 XML 文檔,而 SAX 采用的事件模型。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 忻州市| 宕昌县| 定西市| 民丰县| 尚义县| 洛扎县| 抚松县| 兴义市| 巴青县| 赤城县| 万荣县| 手机| 卢龙县| 吕梁市| 永年县| 咸丰县| 邳州市| 通江县| 泗洪县| 贡山| 禹州市| 云林县| 铜山县| 黄浦区| 民和| 荆州市| 崇文区| 永定县| 张掖市| 玉树县| 屏东市| 申扎县| 桃园市| 徐闻县| 宜州市| 巴彦县| 宜宾市| 砚山县| 班戈县| 韶关市| 重庆市|