锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲无mate20pro麻豆,精品亚洲成A人无码成A在线观看 ,国产亚洲成归v人片在线观看http://www.tkk7.com/wangxq/category/17204.html鍏卞悓鍔姏,鍏遍犺緣鐓?zh-cnThu, 01 Mar 2007 18:24:55 GMTThu, 01 Mar 2007 18:24:55 GMT60[杞琞Java涓洓縐峏ML瑙f瀽鎶鏈箣涓嶅畬鍏ㄦ祴璇?/title><link>http://www.tkk7.com/wangxq/articles/38199.html</link><dc:creator>鎵漿涔懼潳</dc:creator><author>鎵漿涔懼潳</author><pubDate>Thu, 30 Mar 2006 01:58:00 GMT</pubDate><guid>http://www.tkk7.com/wangxq/articles/38199.html</guid><wfw:comment>http://www.tkk7.com/wangxq/comments/38199.html</wfw:comment><comments>http://www.tkk7.com/wangxq/articles/38199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wangxq/comments/commentRss/38199.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wangxq/services/trackbacks/38199.html</trackback:ping><description><![CDATA[ <p>鑷細<a >http://www.5ivb.net/Info/127/Info37906/</a><br /></p> <table class="showinfo" style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="3" width="100%" align="center" border="0"> <tbody> <tr> <td class="showTitle" align="middle"> </td> </tr> <tr> <td> <table cellspacing="0" cellpadding="0" align="left" border="0"> <tbody> <tr> <td> <script language="javascript" src="/ad/js/edu_left_300-300.js"> </script> </td> </tr> </tbody> </table>鍦ㄥ鉤鏃跺伐浣滀腑錛岄毦鍏嶄細閬囧埌鎶奨ML浣滀負鏁版嵁瀛樺偍鏍煎紡銆傞潰瀵圭洰鍓嶇綾葷箒澶氱殑瑙e喅鏂規錛屽摢涓渶閫傚悎鎴戜滑鍛紵鍦ㄨ繖綃囨枃绔犱腑錛屾垜瀵硅繖鍥涚涓繪祦鏂規鍋氫竴涓笉瀹屽叏璇勬祴錛屼粎浠呴拡瀵歸亶鍘哫ML榪欏潡鏉ユ祴璇曪紝鍥犱負閬嶅巻XML鏄伐浣滀腑浣跨敤鏈澶氱殑(鑷沖皯鎴戣涓?銆?<br /><br />銆銆棰勫 <br /><br />銆銆嫻嬭瘯鐜錛?<br /><br />銆銆AMD姣掗緳1.4G OC 1.5G銆?56M DDR333銆乄indows2000 Server SP4銆丼un JDK 1.4.1+Eclipse 2.1+Resin 2.1.8錛屽湪Debug妯″紡涓嬫祴璇曘?<br /><br />銆銆XML鏂囦歡鏍煎紡濡備笅錛?<br /><br />銆銆錛?xml version="1.0" encoding="GB2312"?錛烇紲RESULT錛烇紲VALUE錛?<br /><br />銆銆錛淣O錛濧1234錛?NO錛?<br /><br />銆銆錛淎DDR錛炲洓宸濈渷XX鍘縓X闀嘪X璺疿孌礨X鍙鳳紲/ADDR錛烇紲/VALUE錛烇紲VALUE錛?<br /><br />銆銆錛淣O錛濨1234錛?NO錛?<br /><br />銆銆錛淎DDR錛炲洓宸濈渷XX甯俋X涔X鏉慩X緇勶紲/ADDR錛烇紲/VALUE錛烇紲/RESULT錛?<br /><br />銆銆嫻嬭瘯鏂規硶錛?<br /><br />銆銆閲囩敤JSP绔皟鐢˙ean(鑷充簬涓轟粈涔堥噰鐢↗SP鏉ヨ皟鐢紝璇峰弬鑰冿細http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx)錛岃姣忎竴縐嶆柟妗堝垎鍒В鏋?0K銆?00K銆?000K銆?0000K鐨刋ML鏂囦歡錛岃綆楀叾娑堣楁椂闂?鍗曚綅:姣)銆?<br /><br />銆銆JSP鏂囦歡錛?<br /><br />銆銆錛?@ page contentType="text/html; charset=gb2312" %錛烇紲%@ page import="com.test.*"%錛?<br /><br />銆銆錛渉tml錛烇紲body錛烇紲%String args[]={""};MyXMLReader.main(args);%錛烇紲/body錛烇紲/html錛?<br /><br />銆銆嫻嬭瘯 <br /><br />銆銆棣栧厛鍑哄満鐨勬槸DOM(JAXP Crimson瑙f瀽鍣? <br /><br />銆銆DOM鏄敤涓庡鉤鍙板拰璇█鏃犲叧鐨勬柟寮忚〃紺篨ML鏂囨。鐨勫畼鏂筗3C鏍囧噯銆侱OM鏄互灞傛緇撴瀯緇勭粐鐨勮妭鐐規垨淇℃伅鐗囨柇鐨勯泦鍚堛傝繖涓眰嬈$粨鏋勫厑璁稿紑鍙戜漢鍛樺湪鏍戜腑瀵繪壘鐗瑰畾淇℃伅銆傚垎鏋愯緇撴瀯閫氬父闇瑕佸姞杞芥暣涓枃妗e拰鏋勯犲眰嬈$粨鏋勶紝鐒跺悗鎵嶈兘鍋氫換浣曞伐浣溿傜敱浜庡畠鏄熀浜庝俊鎭眰嬈$殑錛屽洜鑰孌OM琚涓烘槸鍩轟簬鏍戞垨鍩轟簬瀵硅薄鐨勩侱OM浠ュ強騫夸箟鐨勫熀浜庢爲鐨勫鐞嗗叿鏈夊嚑涓紭鐐廣傞鍏堬紝鐢變簬鏍戝湪鍐呭瓨涓槸鎸佷箙鐨勶紝鍥犳鍙互淇敼瀹冧互渚垮簲鐢ㄧ▼搴忚兘瀵規暟鎹拰緇撴瀯浣滃嚭鏇存敼銆傚畠榪樺彲浠ュ湪浠諱綍鏃跺欏湪鏍戜腑涓婁笅瀵艱埅錛岃屼笉鏄儚SAX閭f牱鏄竴嬈℃х殑澶勭悊銆侱OM浣跨敤璧鋒潵涔熻綆鍗曞緱澶氥?<br /><br />銆銆鍙︿竴鏂歸潰錛屽浜庣壒鍒ぇ鐨勬枃妗o紝瑙f瀽鍜屽姞杞芥暣涓枃妗e彲鑳藉緢鎱笖寰堣楄祫婧愶紝鍥犳浣跨敤鍏朵粬鎵嬫鏉ュ鐞嗚繖鏍風殑鏁版嵁浼氭洿濂姐傝繖浜涘熀浜庝簨浠剁殑妯″瀷錛屾瘮濡係AX銆?<br /><br />銆銆Bean鏂囦歡錛?<br /><br />銆銆package com.test; <br /><br />銆銆import java.io.*;import java.util.*;import org.w3c.dom.*;import javax.xml.parsers.*; <br /><br />銆銆public class MyXMLReader{ <br /><br />銆銆public static void main(String arge[]){ <br /><br />銆銆long lasting =System.currentTimeMillis(); <br /><br />銆銆try{ <br /><br />銆銆銆File f=new File("data_10k.xml"); <br /><br />銆銆銆DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); <br /><br />銆銆銆DocumentBuilder builder=factory.newDocumentBuilder(); <br /><br />銆銆銆Document doc = builder.parse(f); <br /><br />銆銆銆NodeList nl = doc.getElementsByTagName("VALUE"); <br /><br />銆銆銆for (int i=0;i錛渘l.getLength();i++){ <br /><br />銆銆銆銆System.out.print("杞︾墝鍙風爜:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); <br /><br />銆銆銆銆System.out.println("杞︿富鍦板潃:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); <br /><br />銆銆} <br /><br />銆銆}catch(Exception e){ <br /><br />銆銆銆e.printStackTrace(); <br /><br />銆銆} <br /><br />銆銆System.out.println("榪愯鏃墮棿錛?+(System.currentTimeMillis() - lasting)+"姣");}} <br /><br />銆銆10k娑堣楁椂闂達細265 203 219 172 <br /><br />銆銆100k娑堣楁椂闂達細9172 9016 8891 9000 <br /><br />銆銆1000k娑堣楁椂闂達細691719 675407 708375 739656 <br /><br />銆銆10000k娑堣楁椂闂達細OutOfMemoryError <br /><br />銆銆鎺ョ潃鏄疭AX <br /><br />銆銆榪欑澶勭悊鐨勪紭鐐歸潪甯哥被浼間簬嫻佸獟浣撶殑浼樼偣銆傚垎鏋愯兘澶熺珛鍗沖紑濮嬶紝鑰屼笉鏄瓑寰呮墍鏈夌殑鏁版嵁琚鐞嗐傝屼笖錛岀敱浜庡簲鐢ㄧ▼搴忓彧鏄湪璇誨彇鏁版嵁鏃舵鏌ユ暟鎹紝鍥犳涓嶉渶瑕佸皢鏁版嵁瀛樺偍鍦ㄥ唴瀛樹腑銆傝繖瀵逛簬澶у瀷鏂囨。鏉ヨ鏄釜宸ㄥぇ鐨勪紭鐐廣備簨瀹炰笂錛屽簲鐢ㄧ▼搴忕敋鑷充笉蹇呰В鏋愭暣涓枃妗o紱瀹冨彲浠ュ湪鏌愪釜鏉′歡寰楀埌婊¤凍鏃跺仠姝㈣В鏋愩備竴鑸潵璇達紝SAX榪樻瘮瀹冪殑鏇夸唬鑰匘OM蹇澶氥?<br />銆銆閫夋嫨DOM榪樻槸閫夋嫨SAX錛?<br /><br />銆銆瀵逛簬闇瑕佽嚜宸辯紪鍐欎唬鐮佹潵澶勭悊XML鏂囨。鐨勫紑鍙戜漢鍛樻潵璇達紝 <br /><br />銆銆閫夋嫨DOM榪樻槸SAX瑙f瀽妯″瀷鏄竴涓潪甯擱噸瑕佺殑璁捐鍐崇瓥銆?<br /><br />銆銆DOM閲囩敤寤虹珛鏍戝艦緇撴瀯鐨勬柟寮忚闂甔ML鏂囨。錛岃孲AX閲囩敤鐨勪簨浠舵ā鍨嬨?<br /><br />銆銆DOM瑙f瀽鍣ㄦ妸XML鏂囨。杞寲涓轟竴涓寘鍚叾鍐呭鐨勬爲錛屽茍鍙互瀵規爲榪涜閬嶅巻銆傜敤DOM瑙f瀽妯″瀷鐨勪紭鐐規槸緙栫▼瀹規槗錛屽紑鍙戜漢鍛樺彧闇瑕佽皟鐢ㄥ緩鏍戠殑鎸囦護錛岀劧鍚庡埄鐢╪avigation APIs璁塊棶鎵闇鐨勬爲鑺傜偣鏉ュ畬鎴愪換鍔°傚彲浠ュ緢瀹規槗鐨勬坊鍔犲拰淇敼鏍戜腑鐨勫厓绱犮傜劧鑰岀敱浜庝嬌鐢―OM瑙f瀽鍣ㄧ殑鏃跺欓渶瑕佸鐞嗘暣涓猉ML鏂囨。錛屾墍浠ュ鎬ц兘鍜屽唴瀛樼殑瑕佹眰姣旇緝楂橈紝灝ゅ叾鏄亣鍒板緢澶х殑XML鏂囦歡鐨勬椂鍊欍傜敱浜庡畠鐨勯亶鍘嗚兘鍔涳紝DOM瑙f瀽鍣ㄥ父鐢ㄤ簬XML鏂囨。闇瑕侀綣佺殑鏀瑰彉鐨勬湇鍔′腑銆?<br /><br />銆銆SAX瑙f瀽鍣ㄩ噰鐢ㄤ簡鍩轟簬浜嬩歡鐨勬ā鍨嬶紝瀹冨湪瑙f瀽XML鏂囨。鐨勬椂鍊欏彲浠ヨЕ鍙戜竴緋誨垪鐨勪簨浠訛紝褰撳彂鐜扮粰瀹氱殑tag鐨勬椂鍊欙紝瀹冨彲浠ユ縺媧諱竴涓洖璋冩柟娉曪紝鍛婅瘔璇ユ柟娉曞埗瀹氱殑鏍囩宸茬粡鎵懼埌銆係AX瀵瑰唴瀛樼殑瑕佹眰閫氬父浼氭瘮杈冧綆錛屽洜涓哄畠璁╁紑鍙戜漢鍛樿嚜宸辨潵鍐沖畾鎵瑕佸鐞嗙殑tag銆傜壒鍒槸褰撳紑鍙戜漢鍛樺彧闇瑕佸鐞嗘枃妗d腑鎵鍖呭惈鐨勯儴鍒嗘暟鎹椂錛孲AX榪欑鎵╁睍鑳藉姏寰楀埌浜嗘洿濂界殑浣撶幇銆備絾鐢⊿AX瑙f瀽鍣ㄧ殑鏃跺欑紪鐮佸伐浣滀細姣旇緝鍥伴毦錛岃屼笖寰堥毦鍚屾椂璁塊棶鍚屼竴涓枃妗d腑鐨勫澶勪笉鍚屾暟鎹?<br /><br />銆銆Bean鏂囦歡錛?<br /><br />銆銆package com.test;import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*; <br /><br />銆銆public class MyXMLReader extends DefaultHandler { <br /><br />銆銆java.util.Stack tags = new java.util.Stack(); <br /><br />銆銆public MyXMLReader() { <br /><br />銆銆super();} <br /><br />銆銆public static void main(String args[]) { <br /><br />銆銆long lasting = System.currentTimeMillis(); <br /><br />銆銆try { <br /><br />銆銆銆SAXParserFactory sf = SAXParserFactory.newInstance(); <br /><br />銆銆銆SAXParser sp = sf.newSAXParser(); <br /><br />銆銆銆MyXMLReader reader = new MyXMLReader(); <br /><br />銆銆銆sp.parse(new InputSource("data_10k.xml"), reader); <br /><br />銆銆} catch (Exception e) { <br /><br />銆銆銆e.printStackTrace(); <br /><br />銆銆} <br /><br />銆銆System.out.println("榪愯鏃墮棿錛? + (System.currentTimeMillis() - lasting) + "姣");} <br /><br />銆銆public void characters(char ch[], int start, int length) throws SAXException { <br /><br />銆銆String tag = (String) tags.peek(); <br /><br />銆銆if (tag.equals("NO")) { <br /><br />銆銆銆System.out.print("杞︾墝鍙風爜錛? + new String(ch, start, length));}if (tag.equals("ADDR")) { <br /><br />銆銆System.out.println("鍦板潃:" + new String(ch, start, length));}} <br /><br />銆銆public void startElement(String uri,String localName,String qName,Attributes attrs) { <br /><br />銆銆tags.push(qName);}} <br /><br />銆銆10k娑堣楁椂闂達細110 47 109 78 <br /><br />銆銆100k娑堣楁椂闂達細344 406 375 422 <br /><br />銆銆1000k娑堣楁椂闂達細3234 3281 3688 3312 <br /><br />銆銆10000k娑堣楁椂闂達細32578 34313 31797 31890 30328 <br /><br />銆銆鐒跺悗鏄疛DOM http://www.jdom.org/ <br /><br />銆銆JDOM鐨勭洰鐨勬槸鎴愪負Java鐗瑰畾鏂囨。妯″瀷錛屽畠綆鍖栦笌XML鐨勪氦浜掑茍涓旀瘮浣跨敤DOM瀹炵幇鏇村揩銆傜敱浜庢槸絎竴涓狫ava鐗瑰畾妯″瀷錛孞DOM涓鐩村緱鍒板ぇ鍔涙帹騫垮拰淇冭繘銆傛鍦ㄨ冭檻閫氳繃鈥淛ava瑙勮寖璇鋒眰JSR-102鈥濆皢瀹冩渶緇堢敤浣溾淛ava鏍囧噯鎵╁睍鈥濄備粠2000騫村垵灝卞凡緇忓紑濮嬩簡JDOM寮鍙戙?<br /><br />銆銆JDOM涓嶥OM涓昏鏈変袱鏂歸潰涓嶅悓銆傞鍏堬紝JDOM浠呬嬌鐢ㄥ叿浣撶被鑰屼笉浣跨敤鎺ュ彛銆傝繖鍦ㄦ煇浜涙柟闈㈢畝鍖栦簡API錛屼絾鏄篃闄愬埗浜嗙伒媧繪с傜浜岋紝API澶ч噺浣跨敤浜咰ollections綾伙紝綆鍖栦簡閭d簺宸茬粡鐔熸倝榪欎簺綾葷殑Java寮鍙戣呯殑浣跨敤銆?<br /><br />銆銆JDOM鏂囨。澹版槑鍏剁洰鐨勬槸鈥滀嬌鐢?0%(鎴栨洿灝?鐨勭簿鍔涜В鍐?0%(鎴栨洿澶?Java/XML闂鈥?鏍規嵁瀛︿範鏇茬嚎鍋囧畾涓?0%)銆侸DOM瀵逛簬澶у鏁癑ava/XML搴旂敤紼嬪簭鏉ヨ褰撶劧鏄湁鐢ㄧ殑錛屽茍涓斿ぇ澶氭暟寮鍙戣呭彂鐜癆PI姣擠OM瀹規槗鐞嗚В寰楀銆侸DOM榪樺寘鎷紼嬪簭琛屼負鐨勭浉褰撳箍娉涙鏌ヤ互闃叉鐢ㄦ埛鍋氫換浣曞湪XML涓棤鎰忎箟鐨勪簨銆傜劧鑰岋紝瀹冧粛闇瑕佹偍鍏呭垎鐞嗚ВXML浠ヤ究鍋氫竴浜涜秴鍑哄熀鏈殑宸ヤ綔(鎴栬呯敋鑷崇悊瑙f煇浜涙儏鍐典笅鐨勯敊璇?銆傝繖涔熻鏄瘮瀛︿範DOM鎴朖DOM鎺ュ彛閮芥洿鏈夋剰涔夌殑宸ヤ綔銆?<br /><br />銆銆JDOM鑷韓涓嶅寘鍚В鏋愬櫒銆傚畠閫氬父浣跨敤SAX2瑙f瀽鍣ㄦ潵瑙f瀽鍜岄獙璇佽緭鍏ML鏂囨。(灝界瀹冭繕鍙互灝嗕互鍓嶆瀯閫犵殑DOM琛ㄧず浣滀負杈撳叆)銆傚畠鍖呭惈涓浜涜漿鎹㈠櫒浠ュ皢JDOM琛ㄧず杈撳嚭鎴怱AX2浜嬩歡嫻併丏OM妯″瀷鎴朮ML鏂囨湰鏂囨。銆侸DOM鏄湪Apache璁稿彲璇佸彉浣撲笅鍙戝竷鐨勫紑鏀炬簮鐮併?<br /><br />銆銆Bean鏂囦歡錛?<br /><br />銆銆package com.test; <br /><br />銆銆import java.io.*;import java.util.*;import org.jdom.*;import org.jdom.input.*; <br /><br />銆銆public class MyXMLReader { <br /><br />銆銆public static void main(String arge[]) { <br /><br />銆銆long lasting = System.currentTimeMillis(); <br /><br />銆銆try { <br /><br />銆銆銆SAXBuilder builder = new SAXBuilder(); <br /><br />銆銆銆Document doc = builder.build(new File("data_10k.xml")); <br /><br />銆銆銆Element foo = doc.getRootElement(); <br /><br />銆銆銆List allChildren = foo.getChildren(); <br /><br />銆銆銆for(int i=0;i錛渁llChildren.size();i++) { <br /><br />銆銆銆銆System.out.print("杞︾墝鍙風爜:" + ((Element)allChildren.get(i)).getChild("NO").getText()); <br /><br />銆銆銆銆System.out.println("杞︿富鍦板潃:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); <br /><br />銆銆銆} <br /><br />銆銆} catch (Exception e) { <br /><br />銆銆銆e.printStackTrace(); <br /><br />銆銆} <br /><br />銆銆System.out.println("榪愯鏃墮棿錛? + (System.currentTimeMillis() - lasting) + "姣");}} <br /><br />銆銆10k娑堣楁椂闂達細125 62 187 94 <br /><br />銆銆100k娑堣楁椂闂達細704 625 640 766 <br /><br />銆銆1000k娑堣楁椂闂達細27984 30750 27859 30656 <br /><br />銆銆10000k娑堣楁椂闂達細OutOfMemoryError <br /><br />銆銆鏈鍚庢槸DOM4J http://dom4j.sourceforge.net/ <br /><br />銆銆铏界劧DOM4J浠h〃浜嗗畬鍏ㄧ嫭绔嬬殑寮鍙戠粨鏋滐紝浣嗘渶鍒濓紝瀹冩槸JDOM鐨勪竴縐嶆櫤鑳藉垎鏀傚畠鍚堝茍浜嗚澶氳秴鍑哄熀鏈琗ML鏂囨。琛ㄧず鐨勫姛鑳斤紝鍖呮嫭闆嗘垚鐨刋Path鏀寔銆乆ML Schema鏀寔浠ュ強鐢ㄤ簬澶ф枃妗f垨嫻佸寲鏂囨。鐨勫熀浜庝簨浠剁殑澶勭悊銆傚畠榪樻彁渚涗簡鏋勫緩鏂囨。琛ㄧず鐨勯夐」錛屽畠閫氳繃DOM4J API鍜屾爣鍑咲OM鎺ュ彛鍏鋒湁騫惰璁塊棶鍔熻兘銆備粠2000涓嬪崐騫村紑濮嬶紝瀹冨氨涓鐩村浜庡紑鍙戜箣涓?<br /><br />銆銆涓烘敮鎸佹墍鏈夎繖浜涘姛鑳斤紝DOM4J浣跨敤鎺ュ彛鍜屾娊璞″熀鏈被鏂規硶銆侱OM4J澶ч噺浣跨敤浜咥PI涓殑Collections綾伙紝浣嗘槸鍦ㄨ澶氭儏鍐典笅錛屽畠榪樻彁渚涗竴浜涙浛浠f柟娉曚互鍏佽鏇村ソ鐨勬ц兘鎴栨洿鐩存帴鐨勭紪鐮佹柟娉曘傜洿鎺ュソ澶勬槸錛岃櫧鐒禗OM4J浠樺嚭浜嗘洿澶嶆潅鐨凙PI鐨勪唬浠鳳紝浣嗘槸瀹冩彁渚涗簡姣擩DOM澶у緱澶氱殑鐏墊椿鎬с?<br /><br />銆銆鍦ㄦ坊鍔犵伒媧繪с乆Path闆嗘垚鍜屽澶ф枃妗e鐞嗙殑鐩爣鏃訛紝DOM4J鐨勭洰鏍囦笌JDOM鏄竴鏍風殑錛氶拡瀵笿ava寮鍙戣呯殑鏄撶敤鎬у拰鐩磋鎿嶄綔銆傚畠榪樿嚧鍔涗簬鎴愪負姣擩DOM鏇村畬鏁寸殑瑙e喅鏂規錛屽疄鐜板湪鏈川涓婂鐞嗘墍鏈塉ava/XML闂鐨勭洰鏍囥傚湪瀹屾垚璇ョ洰鏍囨椂錛屽畠姣擩DOM鏇村皯寮鴻皟闃叉涓嶆紜殑搴旂敤紼嬪簭琛屼負銆?<br /><br />銆銆DOM4J鏄竴涓潪甯擱潪甯鎬紭縐鐨凧ava XML API錛屽叿鏈夋ц兘浼樺紓銆佸姛鑳藉己澶у拰鏋佺鏄撶敤浣跨敤鐨勭壒鐐癸紝鍚屾椂瀹冧篃鏄竴涓紑鏀炬簮浠g爜鐨勮蔣浠躲傚浠婁綘鍙互鐪嬪埌瓚婃潵瓚婂鐨凧ava杞歡閮藉湪浣跨敤DOM4J鏉ヨ鍐橷ML錛岀壒鍒煎緱涓鎻愮殑鏄繛Sun鐨凧AXM涔熷湪鐢―OM4J銆?<br /><br />銆銆Bean鏂囦歡錛?<br /><br />銆銆package com.test; <br /><br />銆銆import java.io.*;import java.util.*;import org.dom4j.*;import org.dom4j.io.*; <br /><br />銆銆public class MyXMLReader { <br /><br />銆銆public static void main(String arge[]) { <br /><br />銆銆long lasting = System.currentTimeMillis(); <br /><br />銆銆try { <br /><br />銆銆銆File f = new File("data_10k.xml"); <br /><br />銆銆銆SAXReader reader = new SAXReader(); <br /><br />銆銆銆Document doc = reader.read(f); <br /><br />銆銆銆Element root = doc.getRootElement(); <br /><br />銆銆銆Element foo; <br /><br />銆銆銆for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) { <br /><br />銆銆銆銆foo = (Element) i.next(); <br /><br />銆銆銆銆System.out.print("杞︾墝鍙風爜:" + foo.elementText("NO")); <br /><br />銆銆銆銆System.out.println("杞︿富鍦板潃:" + foo.elementText("ADDR")); <br /><br />銆銆銆} <br /><br />銆銆} catch (Exception e) { <br /><br />銆銆銆e.printStackTrace(); <br /><br />銆銆} <br /><br />銆銆System.out.println("榪愯鏃墮棿錛? + (System.currentTimeMillis() - lasting) + "姣");}} <br /><br />銆銆10k娑堣楁椂闂達細109 78 109 31 <br /><br />銆銆100k娑堣楁椂闂達細297 359 172 312 <br /><br />銆銆1000k娑堣楁椂闂達細2281 2359 2344 2469 <br /><br />銆銆10000k娑堣楁椂闂達細20938 19922 20031 21078 <br /><br />銆銆JDOM鍜孌OM鍦ㄦц兘嫻嬭瘯鏃惰〃鐜頒笉浣籌紝鍦ㄦ祴璇?0M鏂囨。鏃跺唴瀛樻孩鍑恒傚湪灝忔枃妗f儏鍐典笅榪樺煎緱鑰冭檻浣跨敤DOM鍜孞DOM銆傝櫧鐒禞DOM鐨勫紑鍙戣呭凡緇忚鏄庝粬浠湡鏈涘湪姝e紡鍙戣鐗堝墠涓撴敞鎬ц兘闂錛屼絾鏄粠鎬ц兘瑙傜偣鏉ョ湅錛屽畠紜疄娌℃湁鍊煎緱鎺ㄨ崘涔嬪銆傚彟澶栵紝DOM浠嶆槸涓涓潪甯稿ソ鐨勯夋嫨銆侱OM瀹炵幇騫挎硾搴旂敤浜庡縐嶇紪紼嬭璦銆傚畠榪樻槸璁稿鍏跺畠涓嶺ML鐩稿叧鐨勬爣鍑嗙殑鍩虹錛屽洜涓哄畠姝e紡鑾峰緱W3C鎺ㄨ崘(涓庡熀浜庨潪鏍囧噯鐨凧ava妯″瀷鐩稿)錛屾墍浠ュ湪鏌愪簺綾誨瀷鐨勯」鐩腑鍙兘涔熼渶瑕佸畠(濡傚湪JavaScript涓嬌鐢―OM)銆?<br /><br />銆銆SAX琛ㄧ幇杈冨ソ錛岃繖瑕佷緷璧栦簬瀹冪壒瀹氱殑瑙f瀽鏂瑰紡銆備竴涓猄AX媯嫻嬪嵆灝嗗埌鏉ョ殑XML嫻侊紝浣嗗茍娌℃湁杞藉叆鍒板唴瀛?褰撶劧褰揦ML嫻佽璇誨叆鏃訛紝浼氭湁閮ㄥ垎鏂囨。鏆傛椂闅愯棌鍦ㄥ唴瀛樹腑)銆?<br /><br />銆銆鏃犵枒錛孌OM4J鏄繖鍦烘祴璇曠殑鑾瘋儨鑰咃紝鐩墠璁稿寮婧愰」鐩腑澶ч噺閲囩敤DOM4J錛屼緥濡傚ぇ鍚嶉紟榧庣殑Hibernate涔熺敤DOM4J鏉ヨ鍙朮ML閰嶇疆鏂囦歡銆傚鏋滀笉鑰冭檻鍙Щ妞嶆э紝閭e氨閲囩敤DOM4J鍚э紒(鏂?rosen錛?/td> </tr> </tbody> </table> <img src ="http://www.tkk7.com/wangxq/aggbug/38199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wangxq/" target="_blank">鎵漿涔懼潳</a> 2006-03-30 09:58 <a href="http://www.tkk7.com/wangxq/articles/38199.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞琞鍒╃敤XMLBean杞昏交鏉炬澗璇誨啓XMLhttp://www.tkk7.com/wangxq/articles/38196.html鎵漿涔懼潳鎵漿涔懼潳Thu, 30 Mar 2006 01:53:00 GMThttp://www.tkk7.com/wangxq/articles/38196.htmlhttp://www.tkk7.com/wangxq/comments/38196.htmlhttp://www.tkk7.com/wangxq/articles/38196.html#Feedback0http://www.tkk7.com/wangxq/comments/commentRss/38196.htmlhttp://www.tkk7.com/wangxq/services/trackbacks/38196.html鐗堟潈澹版槑錛氭湰鏂囧彲浠ヨ嚜鐢辮漿杞斤紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈0鏄?/span>
浣滆?鍙舵灚(http://blog.matrix.org.cn/page/鍙舵灚)
鍘熸枃:[http://www.matrix.org.cn/resource/article/44/44027_XMLBean.html]http://www.matrix.org.cn/resource/article/44/44027_XMLBean.html[/url]
鍏抽敭瀛?XML XMLBean Parser

涓銆佸叧浜嶺ML瑙f瀽

聽聽XML鍦↗ava搴旂敤紼嬪簭閲屽彉寰楄秺鏉ヨ秺閲嶈, 騫挎硾搴旂敤浜庢暟鎹瓨鍌ㄥ拰
浜ゆ崲. 姣斿鎴戜滑甯歌鐨勯厤緗枃浠?閮芥槸浠ML鏂瑰紡瀛樺偍鐨? XML榪樺簲鐢?br />浜嶫ava Message Service鍜學eb Services絳夋妧鏈綔涓烘暟鎹氦鎹?
鍥犳,姝g‘璇誨啓XML鏂囨。鏄疿ML搴旂敤鐨勫熀紜.
聽聽Java鎻愪緵浜哠AX鍜孌OM涓ょ鏂瑰紡鐢ㄤ簬瑙f瀽XML,浣嗗嵆渚垮姝?瑕佽鍐欎竴涓?br />紼嶅井澶嶆潅鐨刋ML,涔熶笉鏄竴浠跺鏄撶殑浜?

浜屻乆MLBean綆浠?/span>

聽聽聽聽Hibernate宸茬粡鎴愪負鐩墠嫻佽鐨勯潰鍚慗ava鐜鐨勫璞?鍏崇郴鏁版嵁搴撴槧灝勫伐鍏?
鍦℉ibernate絳夊璞?鍏崇郴鏁版嵁搴撴槧灝勫伐鍏峰嚭鐜頒箣鍓?瀵規暟鎹簱鐨勬搷浣滄槸
閫氳繃JDBC鏉ュ疄鐜扮殑,瀵規暟鎹簱鐨勪換浣曟搷浣?寮鍙戜漢鍛橀兘瑕佽嚜宸卞啓SQL璇彞
鏉ュ疄鐜? 瀵硅薄/鍏崇郴鏁版嵁搴撴槧灝勫伐鍏峰嚭鐜板悗,瀵規暟鎹簱鐨勬搷浣滆漿鎴愬
JavaBean鐨勬搷浣?鏋佸ぇ鏂逛究浜嗘暟鎹簱寮鍙? 鎵浠ュ鏋滄湁涓涓被浼肩殑宸ュ叿鑳藉
瀹炵幇灝嗗XML鐨勮鍐欒漿鎴愬JavaBean鐨勬搷浣?灝嗕細綆鍖朮ML鐨勮鍐?鍗充嬌瀵筙ML
涓嶇啛鎮夌殑寮鍙戜漢鍛樹篃鑳芥柟渚垮湴璇誨啓XML. 榪欎釜宸ュ叿灝辨槸XMLBean.

涓夈佸噯澶嘪MLBean鍜孹ML鏂囨。

聽聽 XMLBean鏄疉pache鐨勪竴涓紑婧愰」鐩?鍙互浠巋ttp://www.apache.org涓嬭澆,
鏈鏂扮殑鐗堟湰鏄?.0. 瑙e帇鍚庣洰褰曞涓?
xmlbean2.0.0
聽聽聽聽 +---bin
聽聽聽聽 +---docs
聽聽聽聽 +---lib
聽聽聽聽 +---samples
聽聽聽聽 +---schemas


鍙﹀榪樿鍑嗗涓涓猉ML鏂囨。(customers.xml),
鍦ㄦ湰鏂囩殑渚嬪瓙閲?鎴戜滑灝嗗榪欎釜鏂囨。榪涜璇誨啓鎿嶄綔. 鏂囨。婧愮爜濡備笅:

<?xml version="1.0" encoding="UTF-8"?>
<Customers>
聽聽聽聽<customer>
聽聽聽聽聽聽聽聽聽聽聽聽<id>1</id>
聽聽聽聽聽聽聽聽聽聽聽聽<gender>female</gender>
聽聽聽聽聽聽聽聽聽聽聽聽<firstname>Jessica</firstname>
聽聽聽聽聽聽聽聽聽聽聽聽<lastname>Lim</lastname>
聽聽聽聽聽聽聽聽聽聽聽聽<phoneNumber>1234567</phoneNumber>
聽聽聽聽聽聽聽聽聽聽聽聽<address>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<primaryAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<postalCode>350106</postalCode>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<addressLine1>#25-1</addressLine1>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<addressLine2>SHINSAYAMA 2-CHOME</addressLine2>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</primaryAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<billingAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<receiver>Ms Danielle</receiver>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<postalCode>350107</postalCode>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<addressLine1>#167</addressLine1>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</billingAddress>
聽聽聽聽聽聽聽聽聽聽聽聽</address>
聽聽聽聽</customer>
聽聽聽聽<customer>
聽聽聽聽聽聽聽聽聽聽聽聽<id>2</id>
聽聽聽聽聽聽聽聽聽聽聽聽<gender>male</gender>
聽聽聽聽聽聽聽聽聽聽聽聽<firstname>David</firstname>
聽聽聽聽聽聽聽聽聽聽聽聽<lastname>Bill</lastname>
聽聽聽聽聽聽聽聽聽聽聽聽<phoneNumber>808182</phoneNumber>
聽聽聽聽聽聽聽聽聽聽聽聽<address>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<primaryAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<postalCode>319087</postalCode>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<addressLine1>1033 WS St.</addressLine1>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<addressLine2>Tima Road</addressLine2>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</primaryAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<billingAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<receiver>Mr William</receiver>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<postalCode>672993</postalCode>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<addressLine1>1033 WS St.</addressLine1>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<addressLine2>Tima Road</addressLine2>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</billingAddress>
聽聽聽聽聽聽聽聽聽聽聽聽</address>
聽聽聽聽</customer>
</Customers>


榪欐槸涓涓鎴風殑鏁版嵁妯″瀷,姣忎釜瀹㈡埛閮芥湁瀹㈡埛緙栧彿(ID),濮撳悕,鎬у埆(gender),
鐢佃瘽鍙風爜(phoneNumber)鍜屽湴鍧,鍏朵腑鍦板潃鏈変袱涓? 棣栬鍦板潃(PrimaryAddress)
鍜屽笎鍗曞湴鍧(BillingAddress),姣忎釜鍦板潃鏈夐偖緙?鍦板潃1,鍜屽湴鍧2緇勬垚.
鍏朵腑甯愬崟鍦板潃榪樻湁鏀朵歡浜?receiver).

聽聽聽聽姝ゅ,榪樿鍑嗗涓涓厤緗枃浠?鏂囦歡鍚峜ustomer.xsdconfig),榪欎釜鏂囦歡鐨?br />浣滅敤鎴戝悗闈細璁?瀹冪殑鍐呭濡備笅:

<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">

聽聽<xb:namespace>
聽聽聽聽<xb:package>sample.xmlbean</xb:package>
聽聽</xb:namespace>

</xb:config>


鍥涖乆MLBean浣跨敤姝ラ

聽聽聽聽鍜屽叾浠栭潰鍚慗ava鐜鐨勫璞?鍏崇郴鏁版嵁搴撴槧灝勫伐鍏風殑浣跨敤姝ラ涓鏍?
鍦ㄦ寮忎嬌鐢╔MLBean鍓?鎴戜滑瑕佷綔涓や釜鍑嗗.

聽聽聽聽1. 鐢熸垚XML Schema鏂囦歡

聽聽聽聽聽聽 浠涔堟槸XML Schema鏂囦歡? 姝e父鎯呭喌涓?姣忎釜XML鏂囦歡閮芥湁涓涓猄chema鏂囦歡,
聽聽聽聽聽聽 XML Schema鏂囦歡鏄竴涓猉ML鐨勭害鏉熸枃浠?瀹冨畾涔変簡XML鏂囦歡鐨勭粨鏋勫拰鍏冪礌.
聽聽聽聽聽聽 浠ュ強瀵瑰厓绱犲拰緇撴瀯鐨勭害鏉? 閫氫織鍦拌,濡傛灉璇碭ML鏂囦歡鏄暟鎹簱閲岀殑璁板綍,
聽聽聽聽聽聽 閭d箞Schema灝辨槸琛ㄧ粨鏋勫畾涔?

聽聽聽聽聽聽 涓轟粈涔堥渶瑕佽繖涓枃浠? XMLBean闇瑕侀氳繃榪欎釜鏂囦歡鐭ラ亾涓涓猉ML鏂囦歡鐨?br />聽聽聽聽聽聽 緇撴瀯浠ュ強綰︽潫,姣斿鏁版嵁綾誨瀷絳? 鍒╃敤榪欎釜Schema鏂囦歡,XMLBean灝嗕細浜х敓
聽聽聽聽聽聽 涓緋誨垪鐩稿叧鐨凧ava Classes鏉ュ疄鐜板XML鐨勬搷浣? 鑰屼綔涓哄紑鍙戜漢鍛?鍒欐槸
聽聽聽聽聽聽 鍒╃敤XMLBean浜х敓鐨凧ava Classes鏉ュ畬鎴愬XML鐨勬搷浣滆屼笉闇瑕丼AX鎴朌OM.

聽聽聽聽聽聽 鎬庢牱浜х敓榪欎釜Schema鏂囦歡鍛? 濡傛灉瀵逛簬鐔熸倝XML鐨勫紑鍙戜漢鍛?鍙互鑷繁鏉?br />聽聽聽聽聽聽 鍐欒繖涓猄chema鏂囦歡,瀵逛簬涓嶇啛鎮塜ML鐨勫紑鍙戜漢鍛?鍙互閫氳繃涓浜涘伐鍏鋒潵瀹屾垚.
聽聽聽聽聽聽 姣旇緝鏈夊悕鐨勫XMLSPY鍜孲tylus Studio閮藉彲浠ラ氳繃XML鏂囦歡鏉ョ敓鎴怱chema
聽聽聽聽聽聽 鏂囦歡. 鍔犲叆鎴戜滑宸茬粡鐢熸垚榪欎釜Schema鏂囦歡(customer.xsd):
聽聽聽聽聽聽

聽聽聽聽聽聽 <?xml version="1.0" encoding="UTF-8"?>
聽聽聽聽聽聽 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽elementFormDefault="qualified">
聽聽聽聽聽聽聽聽 <xs:element name="Customers">
聽聽聽聽聽聽聽聽聽聽 <xs:complexType>
聽聽聽聽聽聽聽聽聽聽聽聽 <xs:sequence>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element maxOccurs="unbounded" name="customer"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 type="customerType"/>
聽聽聽聽聽聽聽聽聽聽聽聽 </xs:sequence>
聽聽聽聽聽聽聽聽聽聽 </xs:complexType>
聽聽聽聽聽聽聽聽 </xs:element>
聽聽聽聽聽聽 <xs:complexType name="customerType">
聽聽聽聽聽聽聽聽聽聽聽聽 <xs:sequence>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="id" type="xs:int"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="gender" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="firstname" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="lastname" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="phoneNumber" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="address" type="addressType"/>
聽聽聽聽聽聽聽聽聽聽聽聽 </xs:sequence>
聽聽聽聽聽聽 </xs:complexType>
聽聽聽聽聽聽聽聽 <xs:complexType name="addressType">
聽聽聽聽聽聽聽聽聽聽聽聽 <xs:sequence>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="primaryAddress" type="primaryAddressType"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="billingAddress" type="billingAddressType"/>
聽聽聽聽聽聽聽聽聽聽聽聽 </xs:sequence>
聽聽聽聽聽聽聽聽 </xs:complexType>

聽聽聽聽聽聽聽聽 <xs:complexType name="primaryAddressType">
聽聽聽聽聽聽聽聽聽聽聽聽 <xs:sequence>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="postalCode" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="addressLine1" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="addressLine2" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽 </xs:sequence>
聽聽聽聽聽聽聽聽 </xs:complexType>
聽聽聽聽聽聽聽聽 <xs:complexType name="billingAddressType">
聽聽聽聽聽聽聽聽聽聽聽聽 <xs:sequence>
聽聽聽聽聽聽 聽聽聽聽聽聽聽聽聽聽聽聽<xs:element name="receiver" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="postalCode" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="addressLine1" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <xs:element name="addressLine2" type="xs:string"/>
聽聽聽聽聽聽聽聽聽聽聽聽 </xs:sequence>
聽聽聽聽聽聽聽聽 </xs:complexType>
聽聽聽聽聽聽 </xs:schema>
聽聽聽聽聽聽


聽聽聽聽2. 鍒╃敤scomp鏉ョ敓鎴怞ava Classes

聽聽聽聽聽聽 scomp鏄疿MLBean鎻愪緵鐨勪竴涓紪璇戝伐鍏?瀹冨湪bin鐨勭洰褰曚笅. 閫氳繃榪欎釜宸ュ叿,
聽聽聽聽聽聽 鎴戜滑鍙互灝嗕互涓婄殑Schema鏂囦歡鐢熸垚Java Classes.
聽聽聽聽聽聽 scomp鐨勮娉曞涓?-

聽聽聽聽聽聽

聽聽聽聽聽聽 scomp [options] [dirs]* [schemaFile.xsd]* [service.wsdl]* [config.xsdconfig]*
聽聽聽聽聽聽


聽聽聽聽聽聽 涓昏鍙傛暟璇存槑:
聽聽聽聽聽聽 -src [dir]聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽-- 鐢熸垚鐨凧ava Classes瀛樻斁鐩綍
聽聽聽聽 -srconly聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽-- 涓嶇紪璇慗ava Classes,涓嶄駭鐢烰ar鏂囦歡
聽聽聽聽 -out [jarFileName]聽聽-- 鐢熸垚鐨凧ar鏂囦歡,緙虹渷鏄痻mltypes.jar
聽聽聽聽聽聽 -compiler聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 -- Java緙栬瘧鍣ㄧ殑璺緞,鍗矹avac鐨勪綅緗?br />聽聽聽聽聽聽 schemaFile.xsd聽聽聽聽-- XML Schema鏂囦歡浣嶇疆
聽聽聽聽聽聽 config.xsdconfig聽聽 -- xsdconfig鏂囦歡鐨勪綅緗? 榪欎釜鏂囦歡涓昏鐢ㄦ潵鍒跺畾鐢熸垚鐨凧ava Class
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽鐨勪竴浜涙枃浠跺悕瑙勫垯鍜孭ackage鐨勫悕縐?鍦ㄦ湰鏂?package鏄痵ample.xmlbean

聽聽聽聽聽聽 鍦ㄦ湰鏂?鎴戞槸榪欐牱榪愯鐨?
聽聽聽聽聽聽

聽聽聽聽聽聽 scomp -src build\src聽聽-out build\customerXmlBean.jar schema\customer.xsd
聽聽聽聽聽聽聽聽聽聽聽聽 -compiler C:\jdk142_04\bin\javac customer.xsdconfig
聽聽聽聽聽聽


聽聽聽聽聽聽 榪欎釜鍛戒護琛岀殑鎰忔濇槸鍛婅瘔scomp鐢熸垚customerXmlBean.jar,鏀懼湪build鐩綍涓?鍚屾椂
聽聽聽聽聽聽 鐢熸垚婧愪唬鐮佹斁鍦╞uild\src涓? Schema鏂囦歡鏄痗ustomer.xsd,xsdconfig鏂囦歡鏄痗ustomer.xsdconfig.

聽聽聽聽聽聽 鍏跺疄, 鐢熸垚鐨凧ava婧愪唬鐮佹病鏈夊澶т綔鐢?鎴戜滑瑕佺殑鏄痡ar鏂囦歡.鎴戜滑鍏堢湅涓涓媌uild\src\sample\xmlbean涓嬬敓鎴愮殑Classes.
聽聽聽聽聽聽

聽聽聽聽聽聽聽聽聽聽CustomersDocument.java聽聽聽聽-- 鏁翠釜XML鏂囨。鐨凧ava Class鏄犲皠
聽聽聽聽聽聽 CustomerType.java聽聽聽聽聽聽聽聽聽聽聽聽聽聽-- 鑺傜偣sustomer鐨勬槧灝?br />聽聽聽聽聽聽 AddressType.java聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 -- 鑺傜偣address鐨勬槧灝?br />聽聽聽聽聽聽 BillingAddressType.java聽聽聽聽聽聽聽聽-- 鑺傜偣billingAddress鐨勬槧灝?br />聽聽聽聽聽聽 PrimaryAddressType.java聽聽聽聽聽聽-- 鑺傜偣primaryAddress鐨勬槧灝?br />聽聽聽聽


聽聽聽聽聽聽 濂戒簡,鍒版鎴戜滑鎵鏈夌殑鍑嗗宸ヤ綔宸茬粡瀹屾垚浜? 涓嬮潰灝卞紑濮嬭繘鍏ラ噸鐐癸細鍒╃敤鍒氭墠鐢熸垚鐨刯ar鏂囦歡璇誨啓XML.

浜斻佸埄鐢╔MLBean璇籜ML鏂囦歡

聽聽聽聽鏂板緩涓涓狫ava Project,灝哫MLBean2.0.0\lib\涓嬬殑Jar鏂囦歡鍜屽垰鎵嶆垜浠敓鎴愮殑customerXmlBean.jar鍔犲叆
聽聽聽聽鍒癙roject鐨凜lassPath.

聽聽聽聽鏂板緩涓涓狫ava Class: CustomerXMLBean.聽聽婧愮爜濡備笅:
聽聽聽聽

聽聽聽聽package com.sample.reader;

聽聽聽聽import java.io.File;
聽聽聽聽
聽聽聽聽import sample.xmlbean.*;
聽聽聽聽import org.apache.commons.beanutils.BeanUtils;
聽聽聽聽import org.apache.xmlbeans.XmlOptions;
聽聽聽聽public class CustomerXMLBean {
聽聽聽聽private String filename = null;
聽聽聽聽
聽聽聽聽public CustomerXMLBean(String filename) {
聽聽聽聽聽聽聽聽聽聽聽聽super();
聽聽聽聽聽聽聽聽聽聽聽聽this.filename = filename;
聽聽聽聽}

聽聽聽聽public void customerReader() {
聽聽聽聽聽聽聽聽聽聽聽聽try {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽File xmlFile = new File(filename);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽CustomerType[] customers = doc.getCustomers().getCustomerArray();
聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽for (int i = 0; i < customers.length; i++) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽CustomerType customer = customers[i];
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("Customer#" + i);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("Customer ID:" + customer.getId());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("First name:" + customer.getFirstname());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("Last name:" + customer.getLastname());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("Gender:" + customer.getGender());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("PhoneNumber:" + customer.getPhoneNumber());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽// Primary address
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽PrimaryAddressType primaryAddress = customer.getAddress().getPrimaryAddress();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("PrimaryAddress:");
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("PostalCode:" + primaryAddress.getPostalCode());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("AddressLine1:" + primaryAddress.getAddressLine1());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("AddressLine2:" + primaryAddress.getAddressLine2());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽// Billing address
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽BillingAddressType billingAddress = customer.getAddress().getBillingAddress();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("BillingAddress:");
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("Receiver:" + billingAddress.getReceiver());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("PostalCode:" + billingAddress.getPostalCode());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("AddressLine1:" + billingAddress.getAddressLine1());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽println("AddressLine2:" + billingAddress.getAddressLine2());
聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽} catch (Exception ex) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽ex.printStackTrace();
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽}
聽聽聽聽private void println(String str) {
聽聽聽聽聽聽聽聽聽聽System.out.println(str);
聽聽聽聽}
聽聽 public static void main(String[] args) {
聽聽聽聽聽聽String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers.xml";
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽 CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 customerXMLBean.customerReader();
聽聽聽聽}

聽聽聽聽}
聽聽聽聽


聽聽聽聽榪愯瀹?鍙傜湅杈撳嚭緇撴灉:
聽聽聽聽

聽聽聽聽聽聽 Customer#0
聽聽聽聽聽聽 Customer ID:1
聽聽聽聽聽聽 First name:Jessica
聽聽聽聽聽聽 Last name:Lim
聽聽聽聽聽聽 Gender:female
聽聽聽聽聽聽 PhoneNumber:1234567
聽聽聽聽聽聽 PrimaryAddress:
聽聽聽聽聽聽 PostalCode:350106
聽聽聽聽聽聽 AddressLine1:#25-1
聽聽聽聽聽聽 AddressLine2:SHINSAYAMA 2-CHOME
聽聽聽聽聽聽 BillingAddress:
聽聽聽聽聽聽 Receiver:Ms Danielle
聽聽聽聽聽聽 PostalCode:350107
聽聽聽聽聽聽 AddressLine1:#167
聽聽聽聽聽聽 AddressLine2:NORTH TOWER HARBOUR CITY

聽聽聽聽聽聽 Customer#1
聽聽聽聽聽聽 Customer ID:2
聽聽聽聽聽聽 First name:David
聽聽聽聽聽聽 Last name:Bill
聽聽聽聽聽聽 Gender:male
聽聽聽聽聽聽 PhoneNumber:808182
聽聽聽聽聽聽 PrimaryAddress:
聽聽聽聽聽聽 PostalCode:319087
聽聽聽聽聽聽 AddressLine1:1033 WS St.
聽聽聽聽聽聽 AddressLine2:Tima Road
聽聽聽聽聽聽 BillingAddress:
聽聽聽聽聽聽 Receiver:Mr William
聽聽聽聽聽聽 PostalCode:672993
聽聽聽聽聽聽 AddressLine1:1033 WS St.
聽聽聽聽聽聽 AddressLine2:Tima Road
聽聽聽聽

聽聽聽聽鎬庝箞鏍?鏄笉鏄緢杞繪澗? XMLBean鐨勫▉鍔?

鍏佸埄鐢╔MLBean鍐橷ML鏂囦歡

聽聽聽聽鍒╃敤XMLBean鍒涘緩涓涓猉ML鏂囨。涔熸槸涓浠惰交鑰屾槗涓劇殑浜?鎴戜滑鍐嶅鍔犱竴涓狹ethod,
聽聽聽聽璇風湅涓涓嬬殑Java Class:
聽聽聽聽

聽聽聽聽public void createCustomer() {
聽聽聽聽try {
聽聽聽聽聽聽聽聽// Create Document
聽聽聽聽聽聽聽聽CustomersDocument doc = CustomersDocument.Factory.newInstance();
聽聽聽聽聽聽聽聽// Add new customer
聽聽聽聽聽聽聽聽CustomerType customer = doc.addNewCustomers().addNewCustomer();
聽聽聽聽聽聽聽聽// set customer info
聽聽聽聽聽聽聽聽customer.setId(3);
聽聽聽聽聽聽聽聽customer.setFirstname("Jessica");
聽聽聽聽聽聽聽聽customer.setLastname("Lim");
聽聽聽聽聽聽聽聽customer.setGender("female");
聽聽聽聽聽聽聽聽customer.setPhoneNumber("1234567");
聽聽聽聽聽聽聽聽// Add new address
聽聽聽聽聽聽聽聽AddressType address = customer.addNewAddress();
聽聽聽聽聽聽聽聽// Add new PrimaryAddress
聽聽聽聽聽聽聽聽PrimaryAddressType primaryAddress = address.addNewPrimaryAddress();
聽聽聽聽聽聽聽聽primaryAddress.setPostalCode("350106");
聽聽聽聽聽聽聽聽primaryAddress.setAddressLine1("#25-1");
聽聽聽聽聽聽聽聽primaryAddress.setAddressLine2("SHINSAYAMA 2-CHOME");

聽聽聽聽聽聽聽聽// Add new BillingAddress
聽聽聽聽聽聽聽聽BillingAddressType billingAddress = address.addNewBillingAddress();
聽聽聽聽聽聽聽聽billingAddress.setReceiver("Ms Danielle");
聽聽聽聽聽聽聽聽billingAddress.setPostalCode("350107");
聽聽聽聽聽聽聽聽billingAddress.setAddressLine1("#167");
聽聽聽聽聽聽聽聽billingAddress.setAddressLine2("NORTH TOWER HARBOUR CITY");

聽聽聽聽聽聽聽聽File xmlFile = new File(filename);
聽聽聽聽聽聽聽聽doc.save(xmlFile);
聽聽聽聽聽聽聽聽} catch (Exception ex) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽ex.printStackTrace();
聽聽聽聽聽聽聽聽}

聽聽}
聽聽聽聽

聽聽聽聽淇敼main method.
聽聽聽聽

聽聽聽聽public static void main(String[] args) {
聽聽聽聽String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
聽聽聽聽聽聽聽聽CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
聽聽聽聽聽聽聽聽customerXMLBean.createCustomer();
聽聽聽聽}
聽聽聽聽

聽聽聽聽榪愯,鎵撳紑customers_new.xml:
聽聽聽聽

聽聽聽聽<?xml version="1.0" encoding="UTF-8"?>
聽聽聽聽<Customers>
聽聽聽聽<customer>
聽聽聽聽聽聽聽聽聽聽聽聽<id>3</id>
聽聽聽聽聽聽聽聽聽聽聽聽<gender>female</gender>
聽聽聽聽聽聽聽聽聽聽聽聽<firstname>Jessica</firstname>
聽聽聽聽聽聽聽聽聽聽聽聽<lastname>Lim</lastname>
聽聽聽聽聽聽聽聽聽聽聽聽<phoneNumber>1234567</phoneNumber>
聽聽聽聽聽聽聽聽聽聽聽聽<address>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<primaryAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <postalCode>350106</postalCode>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <addressLine1>#25-1</addressLine1>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <addressLine2>SHINSAYAMA 2-CHOME</addressLine2>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</primaryAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<billingAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<receiver>Ms Danielle</receiver>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<postalCode>350107</postalCode>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <addressLine1>#167</addressLine1>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</billingAddress>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</address>
聽聽聽聽聽聽聽聽聽聽聽聽</customer>
聽聽聽聽</Customers>
聽聽聽聽



涓冦佸埄鐢╔MLBean淇敼XML鏂囦歡

聽聽聽聽鎴戜滑鍐嶅鍔犱竴涓狹ethod:
聽聽聽聽

聽聽聽聽聽聽public void updateCustomer(int id,String lastname) {
聽聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽File xmlFile = new File(filename);
聽聽聽聽聽聽聽聽CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
聽聽聽聽聽聽聽聽CustomerType[] customers = doc.getCustomers().getCustomerArray();
聽聽聽聽聽聽
聽聽聽聽聽聽聽聽for (int i = 0; i < customers.length; i++) {
聽聽聽聽聽聽聽聽聽聽 CustomerType customer = customers[i];
聽聽聽聽聽聽聽聽聽聽if(customer.getId()==id){
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽customer.setLastname(lastname);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽break;
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽doc.save(xmlFile);
聽聽聽聽聽聽聽聽 } catch (Exception ex) {
聽聽聽聽聽聽聽聽聽聽ex.printStackTrace();
聽聽聽聽聽聽聽聽 }
聽聽 聽聽聽聽聽聽聽聽}
聽聽聽聽

聽聽聽聽main method:
聽聽聽聽

聽聽聽聽public static void main(String[] args) {
聽聽聽聽 String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽customerXMLBean.updateCustomer(3,"last");
聽聽聽聽}
聽聽聽聽

聽聽聽聽榪愯涔嬪悗,鎴戜滑灝嗕細鐪嬪埌瀹㈡埛緙栧彿涓?鐨勫鎴風殑lastname宸茬粡鏀逛負last.

鍏佸埄鐢╔MLBean鍒犻櫎涓涓猚ustomer

聽聽聽聽鍐嶅鍔犱竴涓狹ethod:
聽聽聽聽

聽聽聽聽public void deleteCustomer(int id) {
聽聽聽聽 try {
聽聽聽聽聽聽File xmlFile = new File(filename);
聽聽聽聽 CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
聽聽聽聽CustomerType[] customers = doc.getCustomers().getCustomerArray();

聽聽 for (int i = 0; i < customers.length; i++) {
聽聽聽聽聽聽聽聽CustomerType customer = customers[i];
聽聽聽聽聽聽聽聽if(customer.getId()==id){
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽customer.setNil() ;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽break;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽 }
聽聽 doc.save(xmlFile);
聽聽 } catch (Exception ex) {
聽聽聽聽聽聽聽聽ex.printStackTrace();
聽聽聽聽聽聽聽聽}
聽聽 }


聽聽聽聽聽聽聽聽 main method:
聽聽聽聽

聽聽聽聽public static void main(String[] args) {
聽聽聽聽String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽customerXMLBean.deleteCustomer(3);
聽聽聽聽}

聽聽聽聽聽聽聽聽
榪愯,鎴戜滑灝嗕細鐪嬪埌瀹㈡埛緙栧彿涓?鐨勫鎴風殑璧勬枡宸茬粡琚垹闄?

涔濄佹煡璇ML

聽聽聽聽闄や簡鏈枃鍦ㄤ互涓婅榪扮殑,鍒╃敤XMLBean鑳借交杞繪澗鏉懼畬鎴怷ML鐨勮鍐欐搷浣滃,緇撳悎XPath鍜孹Query,
聽聽 XMLBean榪樿兘瀹屾垚璞QL鏌ヨ鏁版嵁搴撲竴鏍鋒柟渚垮湴鏌ヨXML鏁版嵁. 鍏充簬XML鏌ヨ浠ュ強濡備綍鍒涘緩XML鏁版嵁搴? 鎴戝皢鍦ㄥ彟涓綃囨枃绔犻噷璁ㄨ.



鍗併佺粨鏉熻
聽聽聽聽XMLBean鑳藉府鍔╂垜浠交鏄撹鍐橷ML,榪欏皢鏈夊姪浜庢垜浠檷浣嶺ML鐨勫涔犲拰浣跨敤,鏈変簡榪欎釜鍩虹,
聽聽聽聽寮鍙戜漢鍛樺皢涓哄涔犳洿澶氬湴XML鐩稿叧鎶鏈拰Web Services,JMS絳夊叾浠朖2EE鎶鏈墦涓嬭壇濂藉湴鍩虹.


鍏充簬浣滆咃細
鍙舵灚錛氱儹鐖盝ava鍜孫racle. 鍦ㄨ蔣浠跺紑鍙戞湁榪?0騫? 鐩墠鍦ㄥ浗澶栦竴瀹剁編鍥藉ぇ鍏徃鎷呬換SA, 璐熻矗鎶鏈爺絀躲備綔鑰匓log錛?a target="_new">http://blog.matrix.org.cn/page/鍙舵灚


鎵漿涔懼潳 2006-03-30 09:53 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 免费毛片a在线观看67194 | 色偷偷亚洲第一综合| 老司机精品免费视频| 毛片A级毛片免费播放| 亚洲精品中文字幕乱码| 一级成人a免费视频| 国产大片91精品免费看3| 亚洲精品中文字幕无乱码麻豆| 成人影片一区免费观看| 亚洲Av无码乱码在线znlu| 久久亚洲精品国产亚洲老地址| 91成人在线免费视频| 亚洲综合精品一二三区在线 | 亚洲欧洲自拍拍偷综合| 3344在线看片免费| 亚洲国产成人精品无码区在线观看| 亚洲αⅴ无码乱码在线观看性色| 97视频热人人精品免费| 亚洲暴爽av人人爽日日碰| 免费鲁丝片一级观看| 狼色精品人妻在线视频免费| 免费不卡中文字幕在线| 成全视频在线观看免费| 亚洲导航深夜福利| 国产高清在线精品免费软件| 国产av无码专区亚洲av毛片搜 | 国产精品免费大片| 亚洲不卡在线观看| 亚洲国产精品丝袜在线观看| 久久久免费观成人影院| 综合自拍亚洲综合图不卡区| 最近最好的中文字幕2019免费| 另类小说亚洲色图| 亚洲成色WWW久久网站| 69堂人成无码免费视频果冻传媒| 亚洲AV无码之国产精品| 亚洲日韩精品一区二区三区无码| 黄色网址免费观看| 九九免费精品视频在这里| 亚洲欧洲日韩极速播放| 亚洲精品狼友在线播放|