锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产乱辈通伦影片在线播放亚洲,亚洲av中文无码乱人伦在线咪咕,婷婷亚洲久悠悠色悠在线播放http://m.tkk7.com/rain1102/category/37667.html<br/><font color="green" style="font-family: 鍗庢枃琛屾シ;font-size:16px;">瀛愭洶錛氬嵄閭︿笉鍏ワ紝涔遍偊涓嶅眳銆傚ぉ涓嬫湁閬撳垯瑙侊紝鏃犻亾鍒欓殣銆?lt;/font><font color="#3C1435"></font>zh-cnTue, 23 Jun 2009 16:22:59 GMTTue, 23 Jun 2009 16:22:59 GMT60鍥涚鎿嶄綔xml鐨勬柟寮忥細 SAX, DOM, JDOM , DOM4J鐨勬瘮杈僛杞澆]http://m.tkk7.com/rain1102/archive/2009/06/20/283349.htmlEric.ZhouEric.ZhouSat, 20 Jun 2009 06:09:00 GMThttp://m.tkk7.com/rain1102/archive/2009/06/20/283349.htmlhttp://m.tkk7.com/rain1102/comments/283349.htmlhttp://m.tkk7.com/rain1102/archive/2009/06/20/283349.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/283349.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/283349.html

1. 浠嬬粛

1錛塂OM(JAXP Crimson瑙f瀽鍣?
        DOM鏄敤涓庡鉤鍙板拰璇█鏃犲叧鐨勬柟寮忚〃紺篨ML鏂囨。鐨勫畼鏂筗3C鏍囧噯銆侱OM鏄互灞傛緇撴瀯緇勭粐鐨勮妭鐐規垨淇℃伅鐗囨柇鐨勯泦鍚堛傝繖涓眰嬈$粨鏋勫厑璁稿紑鍙戜漢鍛樺湪鏍戜腑瀵繪壘鐗瑰畾淇℃伅銆傚垎鏋愯緇撴瀯閫氬父闇瑕佸姞杞芥暣涓枃妗e拰鏋勯犲眰嬈$粨鏋勶紝鐒跺悗鎵嶈兘鍋氫換浣曞伐浣溿傜敱浜庡畠鏄熀浜庝俊鎭眰嬈$殑錛屽洜鑰孌OM琚涓烘槸鍩轟簬鏍戞垨鍩轟簬瀵硅薄鐨勩侱OM浠ュ強騫夸箟鐨勫熀浜庢爲鐨勫鐞嗗叿鏈夊嚑涓紭鐐廣傞鍏堬紝鐢變簬鏍戝湪鍐呭瓨涓槸鎸佷箙鐨勶紝鍥犳鍙互淇敼瀹冧互渚垮簲鐢ㄧ▼搴忚兘瀵規暟鎹拰緇撴瀯浣滃嚭鏇存敼銆傚畠榪樺彲浠ュ湪浠諱綍鏃跺欏湪鏍戜腑涓婁笅瀵艱埅錛岃屼笉鏄儚SAX閭f牱鏄竴嬈℃х殑澶勭悊銆侱OM浣跨敤璧鋒潵涔熻綆鍗曞緱澶氥?/p>

2錛塖AX

        SAX澶勭悊鐨勪紭鐐歸潪甯哥被浼間簬嫻佸獟浣撶殑浼樼偣銆傚垎鏋愯兘澶熺珛鍗沖紑濮嬶紝鑰屼笉鏄瓑寰呮墍鏈夌殑鏁版嵁琚鐞嗐傝屼笖錛岀敱浜庡簲鐢ㄧ▼搴忓彧鏄湪璇誨彇鏁版嵁鏃舵鏌ユ暟鎹紝鍥犳涓嶉渶瑕佸皢鏁版嵁瀛樺偍鍦ㄥ唴瀛樹腑銆傝繖瀵逛簬澶у瀷鏂囨。鏉ヨ鏄釜宸ㄥぇ鐨勪紭鐐廣備簨瀹炰笂錛屽簲鐢ㄧ▼搴忕敋鑷充笉蹇呰В鏋愭暣涓枃妗o紱瀹冨彲浠ュ湪鏌愪釜鏉′歡寰楀埌婊¤凍鏃跺仠姝㈣В鏋愩備竴鑸潵璇達紝SAX榪樻瘮瀹冪殑鏇夸唬鑰匘OM蹇澶氥?
 銆銆閫夋嫨DOM榪樻槸閫夋嫨SAX錛?瀵逛簬闇瑕佽嚜宸辯紪鍐欎唬鐮佹潵澶勭悊XML鏂囨。鐨勫紑鍙戜漢鍛樻潵璇達紝  閫夋嫨DOM榪樻槸SAX瑙f瀽妯″瀷鏄竴涓潪甯擱噸瑕佺殑璁捐鍐崇瓥銆?DOM閲囩敤寤虹珛鏍戝艦緇撴瀯鐨勬柟寮忚闂甔ML鏂囨。錛岃孲AX閲囩敤鐨勪簨浠舵ā鍨嬨?

銆銆DOM瑙f瀽鍣ㄦ妸XML鏂囨。杞寲涓轟竴涓寘鍚叾鍐呭鐨勬爲錛屽茍鍙互瀵規爲榪涜閬嶅巻銆傜敤DOM瑙f瀽妯″瀷鐨勪紭鐐規槸緙栫▼瀹規槗錛屽紑鍙戜漢鍛樺彧闇瑕佽皟鐢ㄥ緩鏍戠殑鎸囦護錛岀劧鍚庡埄鐢╪avigation APIs璁塊棶鎵闇鐨勬爲鑺傜偣鏉ュ畬鎴愪換鍔°傚彲浠ュ緢瀹規槗鐨勬坊鍔犲拰淇敼鏍戜腑鐨勫厓绱犮傜劧鑰岀敱浜庝嬌鐢―OM瑙f瀽鍣ㄧ殑鏃跺欓渶瑕佸鐞嗘暣涓猉ML鏂囨。錛屾墍浠ュ鎬ц兘鍜屽唴瀛樼殑瑕佹眰姣旇緝楂橈紝灝ゅ叾鏄亣鍒板緢澶х殑XML鏂囦歡鐨勬椂鍊欍傜敱浜庡畠鐨勯亶鍘嗚兘鍔涳紝DOM瑙f瀽鍣ㄥ父鐢ㄤ簬XML鏂囨。闇瑕侀綣佺殑鏀瑰彉鐨勬湇鍔′腑銆?

銆銆SAX瑙f瀽鍣ㄩ噰鐢ㄤ簡鍩轟簬浜嬩歡鐨勬ā鍨嬶紝瀹冨湪瑙f瀽XML鏂囨。鐨勬椂鍊欏彲浠ヨЕ鍙戜竴緋誨垪鐨勪簨浠訛紝褰撳彂鐜扮粰瀹氱殑tag鐨勬椂鍊欙紝瀹冨彲浠ユ縺媧諱竴涓洖璋冩柟娉曪紝鍛婅瘔璇ユ柟娉曞埗瀹氱殑鏍囩宸茬粡鎵懼埌銆係AX瀵瑰唴瀛樼殑瑕佹眰閫氬父浼氭瘮杈冧綆錛屽洜涓哄畠璁╁紑鍙戜漢鍛樿嚜宸辨潵鍐沖畾鎵瑕佸鐞嗙殑tag銆傜壒鍒槸褰撳紑鍙戜漢鍛樺彧闇瑕佸鐞嗘枃妗d腑鎵鍖呭惈鐨勯儴鍒嗘暟鎹椂錛孲AX榪欑鎵╁睍鑳藉姏寰楀埌浜嗘洿濂界殑浣撶幇銆備絾鐢⊿AX瑙f瀽鍣ㄧ殑鏃跺欑紪鐮佸伐浣滀細姣旇緝鍥伴毦錛岃屼笖寰堥毦鍚屾椂璁塊棶鍚屼竴涓枃妗d腑鐨勫澶勪笉鍚屾暟鎹?

3錛塉DOM           http://www.jdom.org/

          JDOM鐨勭洰鐨勬槸鎴愪負Java鐗瑰畾鏂囨。妯″瀷錛屽畠綆鍖栦笌XML鐨勪氦浜掑茍涓旀瘮浣跨敤DOM瀹炵幇鏇村揩銆傜敱浜庢槸絎竴涓狫ava鐗瑰畾妯″瀷錛孞DOM涓鐩村緱鍒板ぇ鍔涙帹騫垮拰淇冭繘銆傛鍦ㄨ冭檻閫氳繃“Java瑙勮寖璇鋒眰JSR-102”灝嗗畠鏈緇堢敤浣?#8220;Java鏍囧噯鎵╁睍”銆備粠2000騫村垵灝卞凡緇忓紑濮嬩簡JDOM寮鍙戙?

銆銆JDOM涓嶥OM涓昏鏈変袱鏂歸潰涓嶅悓銆傞鍏堬紝JDOM浠呬嬌鐢ㄥ叿浣撶被鑰屼笉浣跨敤鎺ュ彛銆傝繖鍦ㄦ煇浜涙柟闈㈢畝鍖栦簡API錛屼絾鏄篃闄愬埗浜嗙伒媧繪с傜浜岋紝API澶ч噺浣跨敤浜咰ollections綾伙紝綆鍖栦簡閭d簺宸茬粡鐔熸倝榪欎簺綾葷殑Java寮鍙戣呯殑浣跨敤銆?

銆銆JDOM鏂囨。澹版槑鍏剁洰鐨勬槸“浣跨敤20%(鎴栨洿灝?鐨勭簿鍔涜В鍐?0%(鎴栨洿澶?Java/XML闂”(鏍規嵁瀛︿範鏇茬嚎鍋囧畾涓?0%)銆侸DOM瀵逛簬澶у鏁癑ava/XML搴旂敤紼嬪簭鏉ヨ褰撶劧鏄湁鐢ㄧ殑錛屽茍涓斿ぇ澶氭暟寮鍙戣呭彂鐜癆PI姣擠OM瀹規槗鐞嗚В寰楀銆侸DOM榪樺寘鎷紼嬪簭琛屼負鐨勭浉褰撳箍娉涙鏌ヤ互闃叉鐢ㄦ埛鍋氫換浣曞湪XML涓棤鎰忎箟鐨勪簨銆傜劧鑰岋紝瀹冧粛闇瑕佹偍鍏呭垎鐞嗚ВXML浠ヤ究鍋氫竴浜涜秴鍑哄熀鏈殑宸ヤ綔(鎴栬呯敋鑷崇悊瑙f煇浜涙儏鍐典笅鐨勯敊璇?銆傝繖涔熻鏄瘮瀛︿範DOM鎴朖DOM鎺ュ彛閮芥洿鏈夋剰涔夌殑宸ヤ綔銆?

銆銆JDOM鑷韓涓嶅寘鍚В鏋愬櫒銆傚畠閫氬父浣跨敤SAX2瑙f瀽鍣ㄦ潵瑙f瀽鍜岄獙璇佽緭鍏ML鏂囨。(灝界瀹冭繕鍙互灝嗕互鍓嶆瀯閫犵殑DOM琛ㄧず浣滀負杈撳叆)銆傚畠鍖呭惈涓浜涜漿鎹㈠櫒浠ュ皢JDOM琛ㄧず杈撳嚭鎴怱AX2浜嬩歡嫻併丏OM妯″瀷鎴朮ML鏂囨湰鏂囨。銆侸DOM鏄湪Apache璁稿彲璇佸彉浣撲笅鍙戝竷鐨勫紑鏀炬簮鐮併?/p>

4錛塂OM4J http://dom4j.sourceforge.net/ 
            
        铏界劧DOM4J浠h〃浜嗗畬鍏ㄧ嫭绔嬬殑寮鍙戠粨鏋滐紝浣嗘渶鍒濓紝瀹冩槸JDOM鐨勪竴縐嶆櫤鑳藉垎鏀傚畠鍚堝茍浜嗚澶氳秴鍑哄熀鏈琗ML鏂囨。琛ㄧず鐨勫姛鑳斤紝鍖呮嫭闆嗘垚鐨刋Path鏀寔銆乆ML Schema鏀寔浠ュ強鐢ㄤ簬澶ф枃妗f垨嫻佸寲鏂囨。鐨勫熀浜庝簨浠剁殑澶勭悊銆傚畠榪樻彁渚涗簡鏋勫緩鏂囨。琛ㄧず鐨勯夐」錛屽畠閫氳繃DOM4J API鍜屾爣鍑咲OM鎺ュ彛鍏鋒湁騫惰璁塊棶鍔熻兘銆備粠2000涓嬪崐騫村紑濮嬶紝瀹冨氨涓鐩村浜庡紑鍙戜箣涓?

銆銆涓烘敮鎸佹墍鏈夎繖浜涘姛鑳斤紝DOM4J浣跨敤鎺ュ彛鍜屾娊璞″熀鏈被鏂規硶銆侱OM4J澶ч噺浣跨敤浜咥PI涓殑Collections綾伙紝浣嗘槸鍦ㄨ澶氭儏鍐典笅錛屽畠榪樻彁渚涗竴浜涙浛浠f柟娉曚互鍏佽鏇村ソ鐨勬ц兘鎴栨洿鐩存帴鐨勭紪鐮佹柟娉曘傜洿鎺ュソ澶勬槸錛岃櫧鐒禗OM4J浠樺嚭浜嗘洿澶嶆潅鐨凙PI鐨勪唬浠鳳紝浣嗘槸瀹冩彁渚涗簡姣擩DOM澶у緱澶氱殑鐏墊椿鎬с?

銆銆鍦ㄦ坊鍔犵伒媧繪с乆Path闆嗘垚鍜屽澶ф枃妗e鐞嗙殑鐩爣鏃訛紝DOM4J鐨勭洰鏍囦笌JDOM鏄竴鏍風殑錛氶拡瀵笿ava寮鍙戣呯殑鏄撶敤鎬у拰鐩磋鎿嶄綔銆傚畠榪樿嚧鍔涗簬鎴愪負姣擩DOM鏇村畬鏁寸殑瑙e喅鏂規錛屽疄鐜板湪鏈川涓婂鐞嗘墍鏈塉ava/XML闂鐨勭洰鏍囥傚湪瀹屾垚璇ョ洰鏍囨椂錛屽畠姣擩DOM鏇村皯寮鴻皟闃叉涓嶆紜殑搴旂敤紼嬪簭琛屼負銆?

銆銆DOM4J鏄竴涓潪甯擱潪甯鎬紭縐鐨凧ava XML API錛屽叿鏈夋ц兘浼樺紓銆佸姛鑳藉己澶у拰鏋佺鏄撶敤浣跨敤鐨勭壒鐐癸紝鍚屾椂瀹冧篃鏄竴涓紑鏀炬簮浠g爜鐨勮蔣浠躲傚浠婁綘鍙互鐪嬪埌瓚婃潵瓚婂鐨凧ava杞歡閮藉湪浣跨敤DOM4J鏉ヨ鍐橷ML錛岀壒鍒煎緱涓鎻愮殑鏄繛Sun鐨凧AXM涔熷湪鐢―OM4J銆?

2.. 姣旇緝

1錛塂OM4J鎬ц兘鏈濂斤紝榪濻un鐨凧AXM涔熷湪鐢―OM4J銆傜洰鍓嶈澶氬紑婧愰」鐩腑澶ч噺閲囩敤DOM4J錛屼緥濡傚ぇ鍚嶉紟榧庣殑Hibernate涔熺敤DOM4J鏉ヨ鍙朮ML閰嶇疆鏂囦歡銆傚鏋滀笉鑰冭檻鍙Щ妞嶆э紝閭e氨閲囩敤DOM4J.

2錛塉DOM鍜孌OM鍦ㄦц兘嫻嬭瘯鏃惰〃鐜頒笉浣籌紝鍦ㄦ祴璇?0M鏂囨。鏃跺唴瀛樻孩鍑恒傚湪灝忔枃妗f儏鍐典笅榪樺煎緱鑰冭檻浣跨敤DOM鍜孞DOM銆傝櫧鐒禞DOM鐨勫紑鍙戣呭凡緇忚鏄庝粬浠湡鏈涘湪姝e紡鍙戣鐗堝墠涓撴敞鎬ц兘闂錛屼絾鏄粠鎬ц兘瑙傜偣鏉ョ湅錛屽畠紜疄娌℃湁鍊煎緱鎺ㄨ崘涔嬪銆傚彟澶栵紝DOM浠嶆槸涓涓潪甯稿ソ鐨勯夋嫨銆侱OM瀹炵幇騫挎硾搴旂敤浜庡縐嶇紪紼嬭璦銆傚畠榪樻槸璁稿鍏跺畠涓嶺ML鐩稿叧鐨勬爣鍑嗙殑鍩虹錛屽洜涓哄畠姝e紡鑾峰緱W3C鎺ㄨ崘(涓庡熀浜庨潪鏍囧噯鐨凧ava妯″瀷鐩稿)錛屾墍浠ュ湪鏌愪簺綾誨瀷鐨勯」鐩腑鍙兘涔熼渶瑕佸畠(濡傚湪JavaScript涓嬌鐢―OM)銆?/p>

3錛塖AX琛ㄧ幇杈冨ソ錛岃繖瑕佷緷璧栦簬瀹冪壒瀹氱殑瑙f瀽鏂瑰紡錛嶄簨浠墮┍鍔ㄣ備竴涓猄AX媯嫻嬪嵆灝嗗埌鏉ョ殑XML嫻侊紝浣嗗茍娌℃湁杞藉叆鍒板唴瀛?褰撶劧褰揦ML嫻佽璇誨叆鏃訛紝浼氭湁閮ㄥ垎鏂囨。鏆傛椂闅愯棌鍦ㄥ唴瀛樹腑)銆?/p>

3. 鍥涚xml鎿嶄綔鏂瑰紡鐨勫熀鏈嬌鐢ㄦ柟娉?/p>

xml鏂囦歡錛?/p>

<?xml version="1.0" encoding="utf-8" ?>
<Result>
   <VALUE>
       <NO DATE="2005">A1</NO>
       <ADDR>GZ</ADDR>
   </VALUE>
   <VALUE>
       <NO DATE="2004">A2</NO>
       <ADDR>XG</ADDR>
  </VALUE>
</Result>

1錛塂OM

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錛渘l.getLength();i++){
銆銆銆銆System.out.print("杞︾墝鍙風爜:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
銆銆銆銆System.out.println("杞︿富鍦板潃:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
銆 銆}
銆銆}catch(Exception e){
銆銆銆e.printStackTrace();
}

2錛塖AX

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;

public class MyXMLReader extends DefaultHandler {

Java.util.Stack tags = new Java.util.Stack();
銆public MyXMLReader() {
銆銆super();
   }

銆public static void main(String args[]) {
銆銆long lasting = System.currentTimeMillis();
銆銆try {
銆銆銆SAXParserFactory sf = SAXParserFactory.newInstance();
銆銆銆SAXParser sp = sf.newSAXParser();
銆銆銆MyXMLReader reader = new MyXMLReader();
銆銆銆sp.parse(new InputSource("data_10k.xml"), reader);
銆銆} catch (Exception e) {
銆銆銆e.printStackTrace();
銆銆}

銆銆System.out.println("榪愯鏃墮棿錛? + (System.currentTimeMillis() - lasting) + "姣");}
銆銆public void characters(char ch[], int start, int length) throws SAXException {
銆銆String tag = (String) tags.peek();
銆銆if (tag.equals("NO")) { 
銆銆銆System.out.print("杞︾墝鍙風爜錛? + new String(ch, start, length));
    }
    if (tag.equals("ADDR")) {
銆銆System.out.println("鍦板潃:" + new String(ch, start, length));
    }
   }

銆銆public void startElement(String uri,String localName,String qName,Attributes attrs) {
銆銆tags.push(qName);}

3錛?JDOM

import Java.io.*;
import Java.util.*;
import org.jdom.*;
import org.jdom.input.*;

public class MyXMLReader {

銆public static void main(String arge[]) {
銆銆long lasting = System.currentTimeMillis();
銆銆try {
銆銆銆SAXBuilder builder = new SAXBuilder(); 
銆銆銆Document doc = builder.build(new File("data_10k.xml")); 
銆銆銆Element foo = doc.getRootElement(); 
銆銆銆List allChildren = foo.getChildren(); 
銆銆銆for(int i=0;i錛渁llChildren.size();i++) { 
銆銆銆銆System.out.print("杞︾墝鍙風爜:" + ((Element)allChildren.get(i)).getChild("NO").getText());
銆銆銆銆System.out.println("杞︿富鍦板潃:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());
銆銆銆}
銆銆} catch (Exception e) {
銆銆銆e.printStackTrace();
}

}

4錛塂OM4J

import Java.io.*;
import Java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;

public class MyXMLReader {

銆public static void main(String arge[]) {
銆銆long lasting = System.currentTimeMillis();
銆銆try {
銆銆銆File f = new File("data_10k.xml");
銆銆銆SAXReader reader = new SAXReader();
銆銆銆Document doc = reader.read(f);
銆銆銆Element root = doc.getRootElement();
銆銆銆Element foo;
銆銆銆for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
銆銆銆銆foo = (Element) i.next();
銆銆銆銆System.out.print("杞︾墝鍙風爜:" + foo.elementText("NO"));
銆銆銆銆System.out.println("杞︿富鍦板潃:" + foo.elementText("ADDR"));
銆銆銆}
銆銆} catch (Exception e) {
銆銆銆e.printStackTrace();
    }
}



Eric.Zhou 2009-06-20 14:09 鍙戣〃璇勮
]]>
RSShttp://m.tkk7.com/rain1102/archive/2008/01/18/176345.htmlEric.ZhouEric.ZhouFri, 18 Jan 2008 14:14:00 GMThttp://m.tkk7.com/rain1102/archive/2008/01/18/176345.htmlhttp://m.tkk7.com/rain1102/comments/176345.htmlhttp://m.tkk7.com/rain1102/archive/2008/01/18/176345.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/176345.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/176345.html闃呰鍏ㄦ枃

Eric.Zhou 2008-01-18 22:14 鍙戣〃璇勮
]]>
XML/XSL-FOhttp://m.tkk7.com/rain1102/archive/2008/01/18/176203.htmlEric.ZhouEric.ZhouFri, 18 Jan 2008 06:36:00 GMThttp://m.tkk7.com/rain1102/archive/2008/01/18/176203.htmlhttp://m.tkk7.com/rain1102/comments/176203.htmlhttp://m.tkk7.com/rain1102/archive/2008/01/18/176203.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/176203.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/176203.html闃呰鍏ㄦ枃

Eric.Zhou 2008-01-18 14:36 鍙戣〃璇勮
]]>
Java 璇█鐨?XPath APIhttp://m.tkk7.com/rain1102/archive/2006/09/18/70267.htmlEric.ZhouEric.ZhouMon, 18 Sep 2006 05:34:00 GMThttp://m.tkk7.com/rain1102/archive/2006/09/18/70267.htmlhttp://m.tkk7.com/rain1102/comments/70267.htmlhttp://m.tkk7.com/rain1102/archive/2006/09/18/70267.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/70267.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/70267.htmlXPath 琛ㄨ揪寮忔瘮綣佺悙鐨勬枃妗e璞℃ā鍨嬶紙DOM錛夊鑸唬鐮佽瀹規槗緙栧啓寰楀銆傚鏋滈渶瑕佷粠 XML 鏂囨。涓彁鍙栦俊鎭紝鏈蹇嵎銆佹渶綆鍗曠殑鍔炴硶灝辨槸鍦?Java™ 紼嬪簭涓祵鍏?XPath 琛ㄨ揪寮忋侸ava 5 鎺ㄥ嚭浜?javax.xml.xpath 鍖咃紝榪欐槸涓涓敤浜?XPath 鏂囨。鏌ヨ鐨勭嫭绔嬩簬 XML 瀵硅薄妯″瀷鐨勫簱銆?/blockquote>

濡傛灉瑕佸憡璇夊埆浜轟拱涓鍔犱粦鐗涘ザ錛屾偍浼氭庝箞璇達紵“璇峰幓涔頒竴鍔犱粦鐗涘ザ鍥炴潵” 榪樻槸 “浠庡墠闂ㄥ嚭鍘伙紝鍚戝乏杞紝璧頒笁涓鍖哄悜鍙寵漿錛屽啀璧板崐涓鍖哄悜鍙寵漿榪涘叆鍟嗗簵銆傝蛋鍚戝洓鍙烽氶亾錛屾部閫氶亾璧頒簲綾沖悜宸︼紝鎷夸竴鐡朵竴鍔犱粦瑁呯殑鐗涘ザ鐒跺悗鍒版敹閾跺彴浠樻銆傚啀娌垮師璺洖瀹躲?#8221; 綆鐩村お鍙瑧浜嗐傚彧瑕佸湪 “璇峰幓涔頒竴鍔犱粦鐗涘ザ鍥炴潵” 鐨勫熀紜涓婄◢鍔犳寚紺猴紝澶氭暟鎴愪漢閮借兘鑷繁涔板洖鐗涘ザ鏉ャ?

鏌ヨ璇█鍜岃綆楁満鎼滅儲涓庢綾諱技銆傜洿鎺ヨ “鎵句竴涓?Cryptonomicon 鐨勫壇鏈?#8221; 瑕佹瘮緙栧啓鎼滅儲鏌愪釜鏁版嵁搴撶殑璇︾粏閫昏緫瀹規槗寰楀銆傜敱浜庢悳绱㈡搷浣滅殑閫昏緫闈炲父鐩鎬技錛屽彲浠ュ彂鏄庝竴縐嶉氱敤璇█璁╂偍浣跨敤 “鎵懼埌 Neal Stephenson 鐨勬墍鏈夎憲浣?#8221; 榪欐牱鐨勫懡浠わ紝鐒跺悗緙栧啓瀵圭壒瀹氭暟鎹瓨鍌ㄦ墽琛屾綾繪煡璇㈢殑寮曟搸銆?

XPath

鍦ㄤ紬澶氭煡璇㈣璦涔嬩腑錛岀粨鏋勫寲鏌ヨ璇█錛圫QL錛夋槸涓縐嶉拡瀵規煡璇㈢壒瀹氱被鍨嬬殑鍏崇郴搴撹岃璁″拰浼樺寲鐨勮璦銆傚叾浠栦笉閭d箞甯歌鐨勬煡璇㈣璦榪樻湁瀵硅薄鏌ヨ璇█錛圤QL錛夊拰 XQuery銆備絾鏈枃鐨勪富棰樻槸 XPath錛屼竴縐嶄負鏌ヨ XML 鏂囨。鑰岃璁$殑鏌ヨ璇█銆傛瘮濡傦紝涓嬮潰榪欎釜綆鍗曠殑 XPath 鏌ヨ鍙互鍦ㄦ枃妗d腑鎵懼埌浣滆呬負 Neal Stephenson 鐨勬墍鏈夊浘涔︾殑鏍囬錛?/p>
//book[author="Neal Stephenson"]/title

浣滀負瀵圭収錛屾煡璇㈠悓鏍蜂俊鎭殑綰?DOM 鎼滅儲浠g爜濡?娓呭崟 1 鎵紺猴細


娓呭崟 1. 鎵懼埌 Neal Stephenson 鎵鏈夎憲浣?title 鍏冪礌鐨?DOM 浠g爜
        ArrayList result = new ArrayList();
        NodeList books = doc.getElementsByTagName("book");
        for (int i = 0; i < books.getLength(); i++) {
            Element book = (Element) books.item(i);
            NodeList authors = book.getElementsByTagName("author");
            boolean stephenson = false;
            for (int j = 0; j < authors.getLength(); j++) {
                Element author = (Element) authors.item(j);
                NodeList children = author.getChildNodes();
                StringBuffer sb = new StringBuffer();
                for (int k = 0; k < children.getLength(); k++) {
                    Node child = children.item(k);
                    // really should to do this recursively
                    if (child.getNodeType() == Node.TEXT_NODE) {
                        sb.append(child.getNodeValue());
                    }
                }
                if (sb.toString().equals("Neal Stephenson")) {
                    stephenson = true;
                    break;
                }

            }

            if (stephenson) {
                NodeList titles = book.getElementsByTagName("title");
                for (int j = 0; j < titles.getLength(); j++) {
                    result.add(titles.item(j));
                }
            }

        }

涓嶈鎮ㄦ槸鍚︾浉淇★紝娓呭崟 1 涓殑 DOM 鏄劇劧涓嶅綆鍗曠殑 XPath 琛ㄨ揪寮忛氱敤鎴栬呭仴澹傛偍鎰挎剰緙栧啓銆佽皟璇曞拰緇存姢鍝竴涓紵鎴戞兂絳旀寰堟槑鏄俱?

浣嗘槸铏界劧鏈夊緢寮虹殑琛ㄨ揪鑳藉姏錛孹Path 騫朵笉鏄?Java 璇█錛屼簨瀹炰笂 XPath 涓嶆槸涓縐嶅畬鏁寸殑緙栫▼璇█銆傛湁寰堝涓滆タ鐢?XPath 琛ㄨ揪涓嶅嚭鏉ワ紝鐢氳嚦鏈変簺鏌ヨ涔熸棤娉曡〃杈俱傛瘮鏂硅錛孹Path 涓嶈兘鏌ユ壘鍥介檯鏍囧噯鍥句功緙栫爜錛圛SBN錛夋楠岀爜涓嶅尮閰嶇殑鎵鏈夊浘涔︼紝鎴栬呮壘鍑哄澶栧笎鎴鋒暟鎹簱鏄劇ず嬈犲笎鐨勬墍鏈変綔鑰呫傚垢榪愮殑鏄紝鍙互鎶?XPath 緇撳悎鍒?Java 紼嬪簭涓紝榪欐牱灝辮兘鍙戞尌涓よ呯殑浼樺娍浜嗭細Java 鍋?Java 鎵鎿呴暱鐨勶紝XPath 鍋?XPath 鎵鎿呴暱鐨勩?

鐩村埌鏈榪戯紝Java 紼嬪簭鎵ц XPath 鏌ヨ鎵闇瑕佺殑搴旂敤紼嬪簭緙栫▼鎺ュ彛錛圓PI錛夎繕鍥犲艦褰㈣壊鑹茬殑 XPath 寮曟搸鑰屽悇涓嶇浉鍚屻俋alan 鏈変竴縐?API錛孲axon 浣跨敤鍙︿竴縐嶏紝鍏朵粬寮曟搸鍒欎嬌鐢ㄥ叾浠栫殑 API銆傝繖鎰忓懗鐫浠g爜寰寰鎶婃偍闄愬埗鍒頒竴縐嶄駭鍝佷笂銆傜悊鎯蟲儏鍐典笅錛屾渶濂借兘澶熻瘯楠屽叿鏈変笉鍚屾ц兘鐗圭偣鐨勫悇縐嶅紩鎿庯紝鑰屼笉浼氬甫鏉ヤ笉閫傚綋鐨勯夯鐑︽垨鑰呴噸鏂扮紪鍐欎唬鐮併?

浜庢槸錛孞ava 5 鎺ㄥ嚭浜?javax.xml.xpath 鍖咃紝鎻愪緵涓涓紩鎿庡拰瀵硅薄妯″瀷鐙珛鐨?XPath 搴撱傝繖涓寘涔熷彲鐢ㄤ簬 Java 1.3 鍙婁互鍚庣殑鐗堟湰錛屼絾闇瑕佸崟鐙畨瑁?Java API for XML Processing (JAXP) 1.3銆俋alan 2.7 鍜?Saxon 8 浠ュ強鍏朵粬浜у搧鍖呭惈浜嗚繖涓簱鐨勫疄鐜般?





鍥為〉棣?/font>


涓涓畝鍗曠殑渚嬪瓙

鎴戝皢涓句緥璇存槑濡備綍浣跨敤瀹冦傜劧鍚庡啀璁ㄨ涓浜涚粏鑺傞棶棰樸傚亣璁捐鏌ヨ涓涓浘涔﹀垪琛紝瀵繪壘 Neal Stephenson 鐨勮憲浣溿傚叿浣撴潵璇達紝榪欎釜鍥句功鍒楄〃鐨勫艦寮忓 娓呭崟 2 鎵紺猴細


娓呭崟 2. 鍖呭惈鍥句功淇℃伅鐨?XML 鏂囨。
<inventory>
    <book year="2000">
        <title>Snow Crash</title>
        <author>Neal Stephenson</author>
        <publisher>Spectra</publisher>
        <isbn>0553380958</isbn>
        <price>14.95</price>
    </book>
 
    <book year="2005">
        <title>Burning Tower</title>
        <author>Larry Niven</author>
        <author>Jerry Pournelle</author>
        <publisher>Pocket</publisher>
        <isbn>0743416910</isbn>
        <price>5.99</price>
    <book>
 
    <book year="1995">
        <title>Zodiac</title>
        <author>Neal Stephenson<author>
        <publisher>Spectra</publisher>
        <isbn>0553573862</isbn>
        <price>7.50</price>
    <book>

    <!-- more books... -->
 
</inventory>

鎶借薄宸ュ巶

XPathFactory 鏄竴涓娊璞″伐鍘傘傛娊璞″伐鍘傝璁℃ā寮忎嬌寰楄繖涓縐?API 鑳藉鏀寔涓嶅悓鐨勫璞℃ā鍨嬶紝濡?DOM銆丣DOM 鍜?XOM銆備負浜嗛夋嫨涓嶅悓鐨勬ā鍨嬶紝闇瑕佸悜 XPathFactory.newInstance() 鏂規硶浼犻掓爣璇嗗璞℃ā鍨嬬殑緇熶竴璧勬簮鏍囪瘑絎︼紙URI錛夈傛瘮濡?http://xom.nu/ 鍙互閫夋嫨 XOM銆備絾瀹為檯涓婏紝鍒扮洰鍓嶄負姝?DOM 鏄 API 鏀寔鐨勬儫涓瀵硅薄妯″瀷銆?

鏌ユ壘鎵鏈夊浘涔︾殑 XPath 鏌ヨ闈炲父綆鍗曪細//book[author="Neal Stephenson"]銆備負浜嗘壘鍑鴻繖浜涘浘涔︾殑鏍囬錛屽彧瑕佸鍔犱竴姝ワ紝琛ㄨ揪寮忓氨鍙樻垚浜?//book[author="Neal Stephenson"]/title銆傛渶鍚庯紝鐪熸闇瑕佺殑鏄?title 鍏冪礌鐨勬枃鏈妭鐐瑰瀛愩傝繖灝辮姹傚啀澧炲姞涓姝ワ紝瀹屾暣鐨勮〃杈懼紡灝辨槸 //book[author="Neal Stephenson"]/title/text()銆?

鐜板湪鎴戞彁渚涗竴涓畝鍗曠殑紼嬪簭錛屽畠浠?Java 璇█涓墽琛岃繖涓煡璇紝鐒跺悗鎶婃壘鍒扮殑鎵鏈夊浘涔︾殑鏍囬鎵撳嵃鍑烘潵銆傞鍏堬紝闇瑕佸皢鏂囨。鍔犺澆鍒頒竴涓?DOM Document 瀵硅薄涓備負浜嗙畝鍖栬搗瑙侊紝鍋囪璇ユ枃妗e湪褰撳墠宸ヤ綔鐩綍鐨?books.xml 鏂囦歡涓備笅闈㈢殑綆鍗曚唬鐮佺墖孌佃В鏋愭枃妗e茍寤虹珛瀵瑰簲鐨?Document 瀵硅薄錛?


娓呭崟 3. 鐢?JAXP 瑙f瀽鏂囨。
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true); // never forget this!
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse("books.xml");

鍒扮洰鍓嶄負姝紝榪欎粎浠呮槸鏍囧噯鐨?JAXP 鍜?DOM錛屾病鏈変粈涔堟柊椴滅殑銆?

鎺ヤ笅鏉ュ垱寤?XPathFactory錛?/p>
XPathFactory factory = XPathFactory.newInstance();

鐒跺悗浣跨敤榪欎釜宸ュ巶鍒涘緩 XPath 瀵硅薄錛?

XPath xpath = factory.newXPath();

XPath 瀵硅薄緙栬瘧 XPath 琛ㄨ揪寮忥細

PathExpression expr = xpath.compile("http://book[author='Neal Stephenson']/title/text()");

鐩存帴姹傚?/b>

濡傛灉 XPath 琛ㄨ揪寮忓彧浣跨敤涓嬈★紝鍙互璺寵繃緙栬瘧姝ラ鐩存帴瀵?XPath 瀵硅薄璋冪敤 evaluate() 鏂規硶銆備絾鏄紝濡傛灉鍚屼竴涓〃杈懼紡瑕侀噸澶嶄嬌鐢ㄥ嬈★紝緙栬瘧鍙兘鏇村揩涓浜涖?

鏈鍚庯紝璁$畻 XPath 琛ㄨ揪寮忓緱鍒扮粨鏋溿傝〃杈懼紡鏄拡瀵圭壒瀹氱殑涓婁笅鏂囪妭鐐硅綆楃殑錛屽湪榪欎釜渚嬪瓙涓槸鏁翠釜鏂囨。銆傝繕蹇呴』鎸囧畾榪斿洖綾誨瀷銆傝繖閲岃姹傝繑鍥炰竴涓妭鐐歸泦錛?

Object result = expr.evaluate(doc, XPathConstants.NODESET);

鍙互灝嗙粨鏋滃己鍒惰漿鍖栨垚 DOM NodeList錛岀劧鍚庨亶鍘嗗垪琛ㄥ緱鍒版墍鏈夌殑鏍囬錛?

        NodeList nodes = (NodeList) result;
        for (int i = 0; i < nodes.getLength(); i++) {
            System.out.println(nodes.item(i).getNodeValue()); 
        }

娓呭崟 4 鎶婁笂榪扮墖孌電粍鍚堝埌浜嗕竴涓▼搴忎腑銆傝繕瑕佹敞鎰忥紝榪欎簺鏂規硶鍙兘鎶涘嚭涓浜涙鏌ュ紓甯革紝榪欎簺寮傚父蹇呴』鍦?throws 瀛愬彞涓0鏄庯紝浣嗘槸鎴戝湪涓婇潰鎶婂畠浠帺鐩栬搗鏉ヤ簡錛?


娓呭崟 4. 鐢ㄥ浐瀹氱殑 XPath 琛ㄨ揪寮忔煡璇?XML 鏂囨。鐨勫畬鏁寸▼搴?/b>
import Java.io.IOException;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import javax.xml.xpath.*;

public class XPathExample {

  public static void main(String[] args) 
   throws ParserConfigurationException, SAXException, 
          IOException, XPathExpressionException {

    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
    domFactory.setNamespaceAware(true); // never forget this!
    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse("books.xml");

    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    XPathExpression expr 
     = xpath.compile("http://book[author='Neal Stephenson']/title/text()");

    Object result = expr.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;
    for (int i = 0; i < nodes.getLength(); i++) {
        System.out.println(nodes.item(i).getNodeValue()); 
    }

  }

}

XPath 鏁版嵁妯″瀷

姣忓綋娣峰悎浣跨敤璇稿 XPath 鍜?Java 榪欐牱涓ょ涓嶅悓鐨勮璦鏃訛紝蹇呭畾浼氭湁鏌愪簺灝嗕袱鑰呯矘鍚堝湪涓璧風殑鏄庢樉鎺ョ紳銆傚茍闈炰竴鍒囬兘寰堝悎鎷嶃俋Path 鍜?Java 璇█娌℃湁鍚屾牱鐨勭被鍨嬬郴緇熴俋Path 1.0 鍙湁鍥涚鍩烘湰鏁版嵁綾誨瀷錛?/p>

  • node-set
  • number
  • boolean
  • string

褰撶劧錛孞ava 璇█鏈夋洿澶氱殑鏁版嵁綾誨瀷錛屽寘鎷敤鎴峰畾涔夌殑瀵硅薄綾誨瀷銆?/p>

澶氭暟 XPath 琛ㄨ揪寮忥紝鐗瑰埆鏄綅緗礬寰勶紝閮借繑鍥炶妭鐐歸泦銆備絾鏄繕鏈夊叾浠栧彲鑳姐傛瘮濡傦紝XPath 琛ㄨ揪寮?count(//book) 榪斿洖鏂囨。涓殑鍥句功鏁伴噺銆俋Path 琛ㄨ揪寮?count(//book[@author="Neal Stephenson"]) > 10 榪斿洖涓涓竷灝斿鹼細濡傛灉鏂囨。涓?Neal Stephenson 鐨勮憲浣滆秴榪?10 鏈垯榪斿洖 true錛屽惁鍒欒繑鍥?false銆?

evaluate() 鏂規硶琚0鏄庝負榪斿洖 Object銆傚疄闄呰繑鍥炰粈涔堜緷璧栦簬 XPath 琛ㄨ揪寮忕殑緇撴灉浠ュ強瑕佹眰鐨勭被鍨嬨備竴鑸潵璇達紝XPath 鐨?/p>

  • number 鏄犲皠涓?Java.lang.Double
  • string 鏄犲皠涓?Java.lang.String
  • boolean 鏄犲皠涓?Java.lang.Boolean
  • node-set 鏄犲皠涓?org.w3c.dom.NodeList
XPath 2

鍓嶉潰涓鐩村亣璁炬偍浣跨敤鐨勬槸 XPath 1.0銆俋Path 2 澶уぇ鎵╁睍鍜屼慨鏀逛簡綾誨瀷緋葷粺銆侸ava XPath API 鏀寔 XPath 2 鎵闇鐨勪富瑕佷慨鏀規槸涓鴻繑鍥?XPath 2 鏂版暟鎹被鍨嬪鍔犲父閲忋?

鍦?Java 涓綆?XPath 琛ㄨ揪寮忔椂錛岀浜屼釜鍙傛暟鎸囧畾闇瑕佺殑榪斿洖綾誨瀷銆傛湁浜旂鍙兘錛岄兘鍦?javax.xml.xpath.XPathConstants 綾諱腑鍛藉悕浜嗗父閲忥細

  • XPathConstants.NODESET
  • XPathConstants.BOOLEAN
  • XPathConstants.NUMBER
  • XPathConstants.STRING
  • XPathConstants.NODE

鏈鍚庝竴涓?XPathConstants.NODE 瀹為檯涓婃病鏈夊尮閰嶇殑 XPath 綾誨瀷銆傚彧鏈夌煡閬?XPath 琛ㄨ揪寮忓彧榪斿洖涓涓妭鐐規垨鑰呭彧闇瑕佷竴涓妭鐐規椂鎵嶄嬌鐢ㄥ畠銆傚鏋?XPath 琛ㄨ揪寮忚繑鍥炰簡澶氫釜鑺傜偣騫朵笖鎸囧畾浜?XPathConstants.NODE錛屽垯 evaluate() 鎸夌収鏂囨。欏哄簭榪斿洖絎竴涓妭鐐廣傚鏋?XPath 琛ㄨ揪寮忛夋嫨浜嗕竴涓┖闆嗗茍鎸囧畾浜?XPathConstants.NODE錛屽垯 evaluate() 榪斿洖 null銆?

濡傛灉涓嶈兘瀹屾垚瑕佹眰鐨勮漿鎹紝evaluate() 灝嗘姏鍑?XPathException銆?


鍚嶇О絀洪棿涓婁笅鏂?/font>

鑻?XML 鏂囨。涓殑鍏冪礌鍦ㄥ悕縐扮┖闂翠腑錛屾煡璇㈣鏂囨。鐨?XPath 琛ㄨ揪寮忓繀欏諱嬌鐢ㄧ浉鍚岀殑鍚嶇О絀洪棿銆俋Path 琛ㄨ揪寮忎笉涓瀹氳浣跨敤鐩稿悓鐨勫墠緙錛屽彧闇瑕佸悕縐扮┖闂?URI 鐩稿悓鍗沖彲銆備簨瀹炰笂錛屽鏋?XML 鏂囨。浣跨敤榛樿鍚嶇О絀洪棿錛岄偅涔堝敖綆$洰鏍囨枃妗f病鏈変嬌鐢ㄥ墠緙錛孹Path 琛ㄨ揪寮忎篃蹇呴』浣跨敤鍓嶇紑銆?

浣嗘槸錛孞ava 紼嬪簭涓嶆槸 XML 鏂囨。錛屽洜姝や笉鑳界敤涓鑸殑鍚嶇О絀洪棿瑙f瀽銆傚繀欏繪彁渚涗竴涓璞″皢鍓嶇紑鏄犲皠鍒板悕縐扮┖闂?URI銆傝瀵硅薄鏄?javax.xml.namespace.NamespaceContext 鎺ュ彛鐨勫疄渚嬨傛瘮濡傦紝鍋囪鍥句功鏂囨。鏀懼湪 http://www.example.com/books 鍚嶇О絀洪棿涓紝濡?娓呭崟 5 鎵紺猴細


娓呭崟 5. 浣跨敤榛樿鍚嶇О絀洪棿鐨?XML 鏂囨。
<inventory xmlns="http://www.example.com/books">
    <book year="2000">
        <title>Snow Crash</title>
        <author>Neal Stephenson</author>
        <publisher>Spectra</publisher>
        <isbn>0553380958</isbn>
        <price>14.95<price>
    </book>

    <!-- more books... -->

<inventory>

鏌ユ壘 Neal Stephenson 鍏ㄩ儴钁椾綔鏍囬鐨?XPath 琛ㄨ揪寮忓氨瑕佹敼涓?//pre:book[pre:author="Neal Stephenson"]/pre:title/text()銆備絾鏄紝蹇呴』灝嗗墠緙 pre 鏄犲皠鍒?URI http://www.example.com/books銆?code>NamespaceContext 鎺ュ彛鍦?Java 杞歡寮鍙戝伐鍏風錛圝DK錛夋垨 JAXP 涓病鏈夐粯璁ゅ疄鐜頒技涔庢湁鐐圭錛屼絾紜疄濡傛銆備笉榪囷紝鑷繁瀹炵幇涔熶笉闅俱?a >娓呭崟 6 瀵逛竴涓悕縐扮┖闂寸粰鍑轟簡綆鍗曠殑瀹炵幇銆傝繕闇瑕佹槧灝?xml 鍓嶇紑銆?


娓呭崟 6. 緇戝畾涓涓悕縐扮┖闂村拰榛樿鍚嶇О絀洪棿鐨勭畝鍗曚笂涓嬫枃
import Java.util.Iterator;
import javax.xml.*;
import javax.xml.namespace.NamespaceContext;

public class PersonalNamespaceContext implements NamespaceContext {

    public String getNamespaceURI(String prefix) {
        if (prefix == null) throw new NullPointerException("Null prefix");
        else if ("pre".equals(prefix)) return "http://www.example.org/books";
        else if ("xml".equals(prefix)) return XMLConstants.XML_NS_URI;
        return XMLConstants.NULL_NS_URI;
    }

    // This method isn't necessary for XPath processing.
    public String getPrefix(String uri) {
        throw new UnsupportedOperationException();
    }

    // This method isn't necessary for XPath processing either.
    public Iterator getPrefixes(String uri) {
        throw new UnsupportedOperationException();
    }

}

浣跨敤鏄犲皠瀛樺偍緇戝畾鍜屽鍔?setter 鏂規硶瀹炵幇鍚嶇О絀洪棿涓婁笅鏂囩殑閲嶇敤涔熶笉闅俱?

鍒涘緩 NamespaceContext 瀵硅薄鍚庯紝鍦ㄧ紪璇戣〃杈懼紡涔嬪墠灝嗗叾瀹夎鍒?XPath 瀵硅薄涓娿備互鍚庡氨鍙互鍍忎互鍓嶄竴鏍鋒槸鐢ㄨ繖浜涘墠緙鏌ヨ浜嗐傛瘮濡傦細


娓呭崟 7. 浣跨敤鍚嶇О絀洪棿鐨?XPath 鏌ヨ
  XPathFactory factory = XPathFactory.newInstance();
  XPath xpath = factory.newXPath();
  xpath.setNamespaceContext(new PersonalNamespaceContext());
  XPathExpression expr 
    = xpath.compile("http://pre:book[pre:author='Neal Stephenson']/pre:title/text()");

  Object result = expr.evaluate(doc, XPathConstants.NODESET);
  NodeList nodes = (NodeList) result;
  for (int i = 0; i < nodes.getLength(); i++) {
      System.out.println(nodes.item(i).getNodeValue()); 
  }

鍑芥暟姹傝В鍣?/font>

鏈夋椂鍊欙紝鍦?Java 璇█涓畾涔夌敤浜?XPath 琛ㄨ揪寮忕殑鎵╁睍鍑芥暟寰堟湁鐢ㄣ傝繖浜涘嚱鏁板彲浠ユ墽琛岀敤綰?XPath 寰堥毦鎴栬呮棤娉曟墽琛岀殑浠誨姟銆備笉榪囧繀欏繪槸鐪熸鐨勫嚱鏁幫紝鑰屼笉鏄殢鎰忕殑鏂規硶銆傚氨鏄涓嶈兘鏈夊壇浣滅敤銆傦紙XPath 鍑芥暟鍙互鎸夌収浠繪剰鐨勯『搴忔眰鍊間換鎰忓嬈°傦級

閫氳繃 Java XPath API 璁塊棶鐨勬墿灞曞嚱鏁板繀欏誨疄鐜?javax.xml.xpath.XPathFunction 鎺ュ彛銆傝繖涓帴鍙e彧澹版槑浜嗕竴涓柟娉?evaluate錛?

public Object evaluate(List args) throws XPathFunctionException

璇ユ柟娉曞繀欏昏繑鍥?Java 璇█鑳藉杞崲鍒?XPath 鐨勪簲縐嶇被鍨嬩箣涓錛?

  • String
  • Double
  • Boolean
  • Nodelist
  • Node

姣斿錛?a >娓呭崟 8 鏄劇ず浜嗕竴涓墿灞曞嚱鏁幫紝瀹冩鏌?ISBN 鐨勬牎楠屽拰騫惰繑鍥?Boolean銆傝繖涓牎楠屽拰鐨勫熀鏈鍒欐槸鍓嶄節浣嶆暟鐨勬瘡涓浣嶄箻涓婂畠鐨勪綅緗紙鍗崇涓浣嶆暟涔樹笂 1錛岀浜屼綅鏁頒箻涓?2錛屼緷嬈$被鎺級銆傚皢榪欎簺鏁板姞璧鋒潵鐒跺悗鍙栭櫎浠?11 鐨勪綑鏁般傚鏋滀綑鏁版槸 10錛岄偅涔堟渶鍚庝竴浣嶆暟灝辨槸 X銆?


娓呭崟 8. 媯鏌?ISBN 鐨?XPath 鎵╁睍鍑芥暟
import Java.util.List;
import javax.xml.xpath.*;
import org.w3c.dom.*;

public class ISBNValidator implements XPathFunction {

  // This class could easily be implemented as a Singleton.
    
  public Object evaluate(List args) throws XPathFunctionException {

    if (args.size() != 1) {
      throw new XPathFunctionException("Wrong number of arguments to valid-isbn()");
    }

    String isbn;
    Object o = args.get(0);

    // perform conversions
    if (o instanceof String) isbn = (String) args.get(0);
    else if (o instanceof Boolean) isbn = o.toString();
    else if (o instanceof Double) isbn = o.toString();
    else if (o instanceof NodeList) {
        NodeList list = (NodeList) o;
        Node node = list.item(0);
        // getTextContent is available in Java 5 and DOM 3.
        // In Java 1.4 and DOM 2, you'd need to recursively 
        // accumulate the content.
        isbn= node.getTextContent();
    }
    else {
        throw new XPathFunctionException("Could not convert argument type");
    }

    char[] data = isbn.toCharArray();
    if (data.length != 10) return Boolean.FALSE;
    int checksum = 0;
    for (int i = 0; i < 9; i++) {
        checksum += (i+1) * (data[i]-'0');
    }
    int checkdigit = checksum % 11;

    if (checkdigit + '0' == data[9] || (data[9] == 'X' && checkdigit == 10)) {
        return Boolean.TRUE;
    }
    return Boolean.FALSE;

  }

}

涓嬩竴姝ヨ榪欎釜鎵╁睍鍑芥暟鑳藉鍦?Java 紼嬪簭涓嬌鐢ㄣ備負姝わ紝闇瑕佸湪緙栬瘧琛ㄨ揪寮忎箣鍓嶅悜 XPath 瀵硅薄瀹夎 javax.xml.xpath.XPathFunctionResolver銆傚嚱鏁版眰瑙e櫒灝嗗嚱鏁扮殑 XPath 鍚嶇О鍜屽悕縐扮┖闂?URI 鏄犲皠鍒板疄鐜拌鍑芥暟鐨?Java 綾匯?a >娓呭崟 9 鏄竴涓畝鍗曠殑鍑芥暟姹傝В鍣紝灝嗘墿灞曞嚱鏁?valid-isbn 鍜屽悕縐扮┖闂?http://www.example.org/books 鏄犲皠鍒?娓呭崟 8 涓殑綾匯傛瘮濡傦紝XPath 琛ㄨ揪寮?//book[not(pre:valid-isbn(isbn))] 鍙互鎵懼埌 ISBN 鏍¢獙鍜屼笉鍖歸厤鐨勬墍鏈夊浘涔︺?


娓呭崟 9. 璇嗗埆 valid-isbn 鎵╁睍鍑芥暟鐨勪笂涓嬫枃
iimport javax.xml.namespace.QName;
import javax.xml.xpath.*;

public class ISBNFunctionContext implements XPathFunctionResolver {

  private static final QName name 
   = new QName("http://www.example.org/books", "valid-isbn");

  public XPathFunction resolveFunction(QName name, int arity) {
      if (name.equals(ISBNFunctionContext.name) && arity == 1) {
          return new ISBNValidator();
      }
      return null;
  }

}

鐢變簬鎵╁睍鍑芥暟蹇呴』鏈夊悕縐扮┖闂達紝鎵浠ヨ綆楀寘鍚墿灞曞嚱鏁扮殑琛ㄨ揪寮忔椂蹇呴』浣跨敤 NamespaceResolver錛屽嵆渚挎煡璇㈢殑鏂囨。娌℃湁浣跨敤浠諱綍鍚嶇О絀洪棿銆傜敱浜?XPathFunctionResolver銆?code>XPathFunction 鍜?NamespaceResolver 閮芥槸鎺ュ彛錛屽鏋滄柟渚跨殑璇濆彲浠ュ皢瀹冧滑鏀懼湪鎵鏈夌殑綾諱腑銆?


緇撴潫璇?/font>

鐢?SQL 鍜?XPath 榪欐牱鐨勫0鏄庢ц璦緙栧啓鏌ヨ錛岃姣斾嬌鐢?Java 鍜?C 榪欐牱鐨勫懡浠ゅ紡璇█瀹規槗寰楀銆備絾鏄紝鐢?Java 鍜?C 榪欐牱鐨勫浘鐏靛畬鏁磋璦緙栧啓澶嶆潅鐨勯昏緫錛屽張姣?SQL 鍜?XPath 榪欐牱鐨勫0鏄庢ц璦瀹規槗寰楀銆傛墍騫哥殑鏄紝閫氳繃浣跨敤 Java Database Connectivity (JDBC) 鍜?javax.xml.xpath 涔嬬被鐨?API 鍙互灝嗕袱鑰呯粨鍚堣搗鏉ャ傞殢鐫涓栫晫涓婅秺鏉ヨ秺澶氱殑鏁版嵁杞悜 XML錛?code>javax.xml.xpath 灝嗕笌 Java.sql 涓鏍峰彉寰楄秺鏉ヨ秺閲嶈銆?/p>

Eric.Zhou 2006-09-18 13:34 鍙戣〃璇勮
]]>
XPath鐨勮娉?/title><link>http://m.tkk7.com/rain1102/archive/2006/09/18/70209.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Mon, 18 Sep 2006 01:18:00 GMT</pubDate><guid>http://m.tkk7.com/rain1102/archive/2006/09/18/70209.html</guid><wfw:comment>http://m.tkk7.com/rain1102/comments/70209.html</wfw:comment><comments>http://m.tkk7.com/rain1102/archive/2006/09/18/70209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/rain1102/comments/commentRss/70209.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/rain1102/services/trackbacks/70209.html</trackback:ping><description><![CDATA[     鎽樿: 褰撳墠浣嶇疆 褰撴垜浠嬌鐢╔SLT澶勭悊XML婧愭枃妗f槸錛屾垜浠敤Context鏉ヨ〃紺哄綋鍓嶆鍦ㄨ妯℃澘澶勭悊鐨勮妭鐐逛綅緗傛瘮濡倄sl:template match="/"璇彞涓〃紺篊ontext鍦ㄦ枃妗g殑鏍?root)鑺傜偣銆傛垜涓嶇煡閬撳浣曞噯紜殑緲昏瘧Context榪欎釜璇嶏紝瀹冪被浼間簬C璇█閲岀殑鎸囬拡錛岃〃紺虹▼搴忓綋鍓嶈繍琛岀殑浣嶇疆銆傜悊瑙ontext瀵逛簬姝g‘澶勭悊XSL妯℃澘闈炲父閲嶈錛屽綋鎮ㄧ殑XSL妯℃澘杈撳嚭鐨勬枃妗e拰鎮ㄦ兂瑕佺殑涓嶄竴鏍鳳紝鏈鍏?..  <a href='http://m.tkk7.com/rain1102/archive/2006/09/18/70209.html'>闃呰鍏ㄦ枃</a><img src ="http://m.tkk7.com/rain1102/aggbug/70209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/rain1102/" target="_blank">Eric.Zhou</a> 2006-09-18 09:18 <a href="http://m.tkk7.com/rain1102/archive/2006/09/18/70209.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>xsl榪囩▼瑙f瀽http://m.tkk7.com/rain1102/archive/2006/09/18/70207.htmlEric.ZhouEric.ZhouMon, 18 Sep 2006 01:14:00 GMThttp://m.tkk7.com/rain1102/archive/2006/09/18/70207.htmlhttp://m.tkk7.com/rain1102/comments/70207.htmlhttp://m.tkk7.com/rain1102/archive/2006/09/18/70207.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/70207.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/70207.html<?xml version="1.0" encoding="iso-8859-1"?>

榪欐槸鏍囧噯鐨刋ML鏂囨。鐨勯琛屼唬鐮侊紝鍥犱負XSLT鏈韓涔熸槸XML鏂囨。銆?br />encoding灞炴х敤鏉ュ畾涔夋枃妗d嬌鐢ㄧ殑緙栫爜褰㈠紡錛宨so-8859-1涓昏鏀寔瑗挎鍜屽寳緹庣殑璇█緙栫爜銆?br />濡傛灉浣犳兂浣跨敤綆浣撲腑鏂囷紝閭d箞灝卞簲璇ュ啓鎴愶細

<?xml version="1.0" encoding="GB2312"?>

鎺ヤ笅鍘葷殑浠g爜鏄?

<xsl:stylesheet  xmlns:xsl="

榪欐槸鏍囧噯鐨刋SLT鏂囦歡棣栬浠g爜銆倄sl:stylesheet浠g爜鐨勬剰鎬濇槸灝嗘枃妗d綔涓轟竴涓牱寮忚〃鏉?stylesheet)澶勭悊銆?br />xmlns:xsl灞炴ф槸涓涓悕瀛楃┖闂村0鏄庯紝鍜孹ML涓殑鍚嶅瓧絀洪棿浣跨敤鏂規硶涓鏍鳳紝鐢ㄦ潵闃叉鍏冪礌鍚嶇О閲嶅鍜屾販涔便?br />鍏朵腑鍓嶇紑xsl鐨勬剰鎬濇槸鏂囨。涓嬌鐢ㄧ殑鍏冪礌閬靛畧W3C鐨刋SLT瑙勮寖銆?br />鏈鍚庣殑version灞炴ц鏄庢牱寮忚〃鍙噰鐢╔SLT 1.0鐨勬爣鍑嗗姛鑳斤紝榪欎篃鏄洰鍓嶄粎鏈夌殑鏍囧噯銆?/p>

<xsl:template match="/">

涓涓?lt;xsl:template>鍏冪礌瀹氫箟涓涓ā鏉胯鍒欍傚睘鎬atch="/"璇存槑XML婧愭枃妗d腑錛岃繖涓ā鏉胯鍒欎綔鐢ㄧ殑璧風偣銆?/"鏄竴縐峏Path璇硶錛屾垜浠湪鍚庨潰灝嗚緇嗚榪幫紝榪欓噷鐨?/"浠h〃XML緇撴瀯鏍戠殑鏍?root)銆?/p>

鎺ヤ笅鍘葷殑浠g爜鏄?

<html>

<head>

<title>First XSLT Example</title>

</head>

<body>

<p><xsl:value-of select="greeting"/></p>

</body>

</html>

璇存槑錛氬綋妯℃澘瑙勫垯琚Е鍙戯紝妯℃澘鐨勫唴瀹瑰氨浼氭帶鍒惰緭鍑虹殑緇撴灉銆備緥瀛愪腑錛屾ā鏉垮ぇ閮ㄥ垎鍐呭鐢盚TML鍏?br />绱犲拰鏂囨湰鏋勬垚銆傚彧鏈?lt;xsl:value-of>鍏冪礌鏄疿SLT璇硶錛岃繖閲?lt;xsl:value-of>鐨勪綔鐢ㄦ槸鎷瘋礉鍘熸枃妗d腑鐨?br />涓涓妭鐐圭殑鍊煎埌杈撳嚭鏂囨。銆傝宻elect灞炴у垯璇︾粏鎸囧畾瑕佸鐞嗙殑鑺傜偣鍚嶇О銆傝繖鏄疿Path璇硶錛?greeting"
鐨勬剰鎬濆氨鏄鎵炬牴鑺傜偣鍚嶄負greeting鐨勫厓绱狅紝騫剁敤妯℃澘鏉ュ鐞嗚繖涓妭鐐廣傚叿浣撶殑灝辨槸鎵懼埌<greeting>
鍏冪礌錛岀劧鍚庡皢鍏冪礌鐨勫?hello world"鎸夋ā鏉挎牱寮忔嫹璐濆埌杈撳嚭鏂囦歡銆?

鎻愮ず錛氱敱浜嶺ML鏂囨。鏄弗鏍肩殑灞傜駭緇撴瀯(鐢↖E5鏌ョ湅XML鏂囦歡錛屼細鐪嬭XML鏂囨。綾諱技澶氱駭鍏寵仈鑿滃崟)錛?br />鎵浠ユ垜浠艦璞$殑縐癤ML鏂囨。涓烘枃妗f爲錛屽叾涓瘡涓瀵瑰厓绱犵О浣滄爲鐨勪竴涓妭鐐廣傛牴鍏冪礌灝辨槸鏍硅妭鐐廣?/p>

鏈鍚庡叧闂墍鏈夊厓绱狅細

</xsl:template>

</xsl:stylesheet>

 



Eric.Zhou 2006-09-18 09:14 鍙戣〃璇勮
]]>
XML鎶宸т簲鍒?/title><link>http://m.tkk7.com/rain1102/archive/2006/09/18/70202.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Mon, 18 Sep 2006 00:47:00 GMT</pubDate><guid>http://m.tkk7.com/rain1102/archive/2006/09/18/70202.html</guid><wfw:comment>http://m.tkk7.com/rain1102/comments/70202.html</wfw:comment><comments>http://m.tkk7.com/rain1102/archive/2006/09/18/70202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/rain1102/comments/commentRss/70202.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/rain1102/services/trackbacks/70202.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #0099cc 0.75pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: #0099cc 0.75pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ddedfb; PADDING-BOTTOM: 4pt; BORDER-LEFT: #0099cc 0.75pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: #0099cc 0.75pt solid"> <span lang="EN-US"> <font size="2"> <font face="瀹嬩綋, MS Song"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"> <strong> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鎶宸?/span> </strong> <strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">1</span> </strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> </span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">銆銆</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">XmlNode.InnerText</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">涓?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">.InnerXml</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鐨勫尯鍒槸錛氬墠鑰呭皢鍐呭涓殑</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"><</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鍜?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">></span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鍒嗗埆鍙樻垚</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"><</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鍜?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">></span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">錛屽洜姝わ紝甯屾湜灝嗕袱孌?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> XmlDocument </span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鍚堝茍鐨勭▼搴忓彧鑳戒嬌鐢?/span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <span lang="EN-US"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?> <o:p> </o:p> </span> </span> </p> <p class="code" style="MARGIN: 3.75pt"> <br />XmlDocumentFragment.InnerXml = XmlNode.OuterXml<o:p></o:p></p> </font> </font> </span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> </span> <strong> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鎶宸?/span> </strong> <strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">2</span> </strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> <o:p> <p class="code" style="MARGIN: 3.75pt"> <span lang="EN-US"> <font size="2"> <font face="瀹嬩綋, MS Song">/XPath: string end-with <br /><br /><xsl:for-each select="root/data[substring-after(@name,'.')= 'Text' and string-length(value)>0]"><o:p></o:p></font> </font> </span> </p> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> </span> <strong> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鎶宸?/span> </strong> <strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">3</span> </strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> </span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">銆銆涓涓?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">XML</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鏂囨。鍦?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">Load</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鏃跺鏋滃け璐ワ紝灝辨槸鏍規湰涓嶅悎娉曪紱鏄惁絎﹀悎鏌愪釜</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">Schema</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">錛?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">XSD</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">錛夌殑瑕佹眰鍒欐槸鏈夋晥鎬?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">(valid)</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">媯鏌ワ紝鏂規硶鏄嬌鐢?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">XmlValidatingReader</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">瀵硅薄鐨?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">Schemas</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鍜?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">ValidationType</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">灞炴с?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> </span> <strong> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鎶宸?/span> </strong> <strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">4</span> </strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> </span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">銆銆</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">XmlDataDocument</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">綾繪槸浠?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">XmlDocument</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">媧劇敓鍑烘潵鐨勶紝鏈閲嶈鐨勬槸澧炲姞浜嗕竴涓?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">DataSet</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">灞炴с備笉榪囪繖涓被涓嶆槸</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">System.Xml</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鎻愪緵鐨勶紝鑰屾槸</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">System.Data</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鎻愪緵鐨勩傚浜庢繪槸瑕佽窡鏁版嵁搴撴墦浜ら亾鐨勫簲鐢ㄧ▼搴忔潵璇達紝鍙嶆鏄寮曠敤</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">System.Data</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鐨勶紝涓嶅鍏ㄩ儴鐢?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">XmlDataDocument</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">銆?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> </span> <strong> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鎶宸?/span> </strong> <strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">5</span> </strong> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '"> <br /> </span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">銆銆濡備綍灝?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">XmlDataDocument</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">瀵硅薄涓殑</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">DataSet</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鏇存柊淇濆瓨鍒版暟鎹簱涓紵</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">DataSet</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鏈韓鏈変竴涓?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: ' '">AcceptChanges</span> <span style="FONT-SIZE: 10.5pt; COLOR: #333333; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: ' '; mso-hansi-font-family: ' '">鏂規硶錛屾墍浠ュ彧闇瑕侊細<br /><br /><span lang="EN-US"><font size="2"><font face="瀹嬩綋, MS Song">    xmlDataDoc.DataSet.AcceptChanges();</font></font></span></span> </o:p> </span> </div> <p class="code" style="MARGIN: 3.75pt"> <span lang="EN-US"> <font size="2"> <font face="瀹嬩綋, MS Song"> <o:p> </o:p> </font> </font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <o:p></o:p></span> </p><img src ="http://m.tkk7.com/rain1102/aggbug/70202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/rain1102/" target="_blank">Eric.Zhou</a> 2006-09-18 08:47 <a href="http://m.tkk7.com/rain1102/archive/2006/09/18/70202.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://928348.com" target="_blank">免费99精品国产自在现线</a>| <a href="http://xyhfloor.com" target="_blank">久久午夜夜伦鲁鲁片免费无码影视</a>| <a href="http://5079157.com" target="_blank">日韩成全视频观看免费观看高清</a>| <a href="http://www456788.com" target="_blank">亚洲国产精品成人精品小说</a>| <a href="http://6609929.com" target="_blank">**毛片免费观看久久精品</a>| <a href="http://81am.com" target="_blank">亚洲免费人成视频观看</a>| <a href="http://hgbookvip.com" target="_blank">99久久免费精品国产72精品九九</a>| <a href="http://pjwys.com" target="_blank">精品久久亚洲中文无码</a>| <a href="http://jmdehong.com" target="_blank">日韩人妻无码免费视频一区二区三区 </a>| <a href="http://kuaizhuxia.com" target="_blank">久久综合亚洲色HEZYO国产</a>| <a href="http://41xjj.com" target="_blank">国产精品成人亚洲</a>| <a href="http://www-66409b.com" target="_blank">亚洲国产精品一区二区九九</a>| <a href="http://25v8.com" target="_blank">亚洲熟妇无码一区二区三区导航 </a>| <a href="http://2828228.com" target="_blank">4444www免费看</a>| <a href="http://papapa97.com" target="_blank">亚洲免费视频观看</a>| <a href="http://99999pp.com" target="_blank">在线免费观看毛片网站</a>| <a href="http://wwwdd312.com" target="_blank">黄色毛片免费在线观看</a>| <a href="http://tedegold.com" target="_blank">国产aⅴ无码专区亚洲av麻豆</a>| <a href="http://szqsnt.com" target="_blank">男人j进入女人j内部免费网站</a>| <a href="http://www-92109.com" target="_blank">亚洲自偷自拍另类图片二区</a>| <a href="http://5gi555.com" target="_blank">日本一区二区三区免费高清</a>| <a href="http://cc006.com" target="_blank">日本亚洲高清乱码中文在线观看</a>| <a href="http://ulihix.com" target="_blank">亚洲成av人在片观看</a>| <a href="http://zjfxjy.com" target="_blank">国产成人精品免费久久久久</a>| <a href="http://17soco.com" target="_blank">亚洲一区二区三区在线网站</a>| <a href="http://99rlcf.com" target="_blank">免费一级大黄特色大片</a>| <a href="http://jdv6.com" target="_blank">免费观看在线禁片</a>| <a href="http://pgb168.com" target="_blank">亚洲熟妇AV乱码在线观看</a>| <a href="http://yuduruizhi.com" target="_blank">成人亚洲综合天堂</a>| <a href="http://sdzntg.com" target="_blank">日本黄色动图免费在线观看</a>| <a href="http://www-887234.com" target="_blank">中文字幕在线观看亚洲视频</a>| <a href="http://chibifilm.com" target="_blank">婷婷综合缴情亚洲狠狠尤物</a>| <a href="http://jybelt.com" target="_blank">国产精品免费福利久久</a>| <a href="http://btztjxc.com" target="_blank">亚洲熟女综合色一区二区三区 </a>| <a href="http://zzjiji.com" target="_blank">永久免费毛片在线播放</a>| <a href="http://haiholr.com" target="_blank">美女黄色毛片免费看</a>| <a href="http://haiholr.com" target="_blank">亚洲综合一区二区国产精品</a>| <a href="http://6006769.com" target="_blank">国产公开免费人成视频</a>| <a href="http://woaianli.com" target="_blank">久久国产乱子伦精品免费强</a>| <a href="http://aizaicc.com" target="_blank">亚洲日本中文字幕天天更新</a>| <a href="http://abbobo.com" target="_blank">国产国拍亚洲精品mv在线观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>