Search

JAVA - dom4j的Selector使用xpath的效能差異

2014-12-21 11:31 PM

在Java中我們最常使用的XML解析套件應該就是dom4j了

用起來算是非常便利

我會選擇這個主要也是因為他跟Javascript在解析XML的功能上非常相似

會需要使用這類套件主要就是想取得特定節點的某個值

也就是會使用到Selector中的xpath

而Selector的使用差異可使搜尋效能相差千倍以上

以下兩種各為直接使用文件物件搜尋指定節點的方法

可以看看不同的xpath使用方式會帶來多大的效能差異

// 直接使用document做搜尋
@SuppressWarnings("unchecked")
List rowElements = (List) xml.getDoc().selectNodes("//report/table/row");

//56674筆資料
//執行時間為160851毫秒
// 使用已知節點路徑 分開多次搜尋
Element tableElement = (Element) xml.getDoc().selectSingleNode("//report/table");
  
@SuppressWarnings("unchecked")
List rowElements = (List) tableElement.selectNodes("row");

//56674筆資料
//執行時間為599毫秒

也就是說 我們應該盡量以已知節點做搜尋

而不是從整個dom文件做搜尋

雖然第一種方法程式碼較短

但第二種方法才是最佳的使用方式

很多時候 優雅的程式碼並不一定是最好的方法


各項資料連結
dom4j官方教學

No comments:

Post a Comment