瑙e喅鏂規錛氭柟妗堜竴.浠巟ml鏂囦歡涓鍙栧崟涓俊鎭紝姣忔璇誨彇閮介噸鏂版墦寮鏂囦歡
鏂規浜?灝嗘枃浠朵俊鎭斁鍒板唴瀛樹腑錛屾瘡嬈¢氳繃鏂囦歡淇℃伅鍙ユ焺鏌ユ壘
鏂規涓?浠庡唴瀛樹腑璇誨彇錛屽皢鏂囦歡瀛樺偍鍦╤ashmap涓紝姣忔閫氳繃hashmap鏄犲皠
鎶鏈細浣跨敤dom4j銆亁path
example1: 閫氳繃IATA鏌ユ壘瀵瑰簲鐨処CAO錛圛ATA錛孖CAO鍙傝冩敞錛?br />
airlines.xml
瀛樺偍浜哸irline鐨処ATA鍜孖CAO錛宺oot鏄?lt;airlines>,root鐨勫瓙鍏冪礌涓?lt;element>錛?lt;element>鐨勫睘鎬т負IATA,ICAO
<?xml version="1.0" encoding="UTF-8"?>
<airlines>
<element IATA="AL" ICAO="TXC"/>
<element IATA="AY" ICAO="FIN"/>
.
.
</airlines>
AirlinesXml.java
鏂規硶parse銆乬etDocment瑙f瀽xml鏂囦歡錛屾瘮杈冪畝鍗曪紝涓嶈В閲婁簡
private static Document getDocument() throws DocumentException
{
if(doc==null){
doc = parse(new File(fileUrl));
}
return doc;
}
private static Document parse(File file) throws DocumentException {
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(file);
return doc;
}
鏂規硶getICAO()錛宻triata錛岄氳繃xpath鐩存帴鏌ユ壘瀵瑰簲iata鐨刬cao 錛岀涓璋冪敤璇ユ柟娉曟椂璇誨彇鏂囦歡錛屼繚鐣檇oc錛屼互鍚庝粠doc涓煡鎵懼搴斾俊鎭?br />
/**
* 濡傛灉娌℃湁鍒欒繑鍥瀗ull
* @param str 褰撳墠鐨剆trIATA
* @return String icao
*/
public static String getICAO(String strIATA)
{
String tmp=null;
String xpathStr="//element[@IATA='"+str+"']";
try {
Document doc=getDocument();
Node node=(Node) doc.selectSingleNode(xpathStr);
if(node!=null)
{
tmp=node.valueOf("@ICAO");
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
logger.error("娌℃湁璇ユ枃浠訛紝鏂囦歡url涓?/span>"+fileUrl,e);
}
return tmp;
}
鏂規硶錛歡etIcaoFromMap()涓庡墠涓鏂規硶鐨勪笉鍚屽湪浜庣涓嬈path淇℃伅閬嶅巻鎵鏈変俊鎭瓨鍌ㄥ湪hashmap涓紝浠ュ悗閫氳繃hashmap鏌ユ壘
public static String getICAOFromMap(String iataStr)
{
if(airlineMap==null){
String xpath="//element[@IATA]";
airlineMap=new HashMap<String, String>();
try{
Document doc=getDocument();
List list=doc.selectNodes(xpath);
for(Iterator iter=list.iterator();iter.hasNext();)
{
Node node=(Node)iter.next();
airlineMap.put(node.valueOf("@IATA"), node.valueOf("@ICAO"));
}
}catch (DocumentException e) {
// TODO Auto-generated catch block
logger.error("娌℃湁璇ユ枃浠訛紝鏂囦歡url涓?/span>"+fileUrl,e);
}
}
return airlineMap.get(iataStr);
}
main鍑芥暟
public static void main(String[] args){
long time1=System.currentTimeMillis();
System.out.println(getICAO("OV"));
long time2=System.currentTimeMillis();
System.out.println("getICAO:絎竴嬈?/span>"+(time2-time1)+" "+(time2-time1)/1000);
System.out.println(getICAO("CA"));
long time3=System.currentTimeMillis();
System.out.println("getICAO:絎簩嬈?/span>"+(time3-time2)+" "+(time3-time2)/1000);
System.out.println(getICAOFromMap("CA"));
long time4=System.currentTimeMillis();
System.out.println("getICAOMap:絎竴嬈?/span>"+(time4-time3)+" "+(time4-time3)/1000);
System.out.println(getICAOFromMap("OV"));
long time5=System.currentTimeMillis();
System.out.println("getICAOMap:絎簩嬈?/span>"+(time5-time4)+" "+(time5-time4)/1000);
}
榪愯緇撴灉涓猴細
NAN
getICAO:絎竴嬈?72 0
CCA
getICAO:絎簩嬈?7 0
CCA
getICAOMap:絎竴嬈?25 0
NAN
getICAOMap:絎簩嬈? 0
鍙xpath涓煡鎵懼崟涓暟鎹殑鏃墮棿姣旈亶鍘嗕負map鍚庡啀鍦ㄥ唴瀛樼殑hashmap涓參
xpath鏄爲緇撴瀯鏌ユ壘錛屾墍浠ユ椂闂翠負log錛坣錛夌駭鍒紝鎵浠ヨ緝鎱紝寤鴻褰撴枃浠朵笉澶ぇ鏃跺彲浠ヨ冭檻瀛樺偍鍦ㄦ湰鍦拌繘琛屽瓨鍌?br />
娉細IATA銆両CAO涓鴻埅絀哄叕鍙哥殑浜屽瓧鐮併佷笁瀛楃爜
婧愮爜涓嬭澆錛?a href="/Files/onedaylover/perfomance_dom4j.rar">http://www.tkk7.com/Files/onedaylover/perfomance_dom4j.rar

]]>