1錛庡熀鏈殑DOM瀵硅薄
DOM鐨勫熀鏈璞℃湁5涓細(xì)Document錛孨ode錛孨odeList錛孍lement鍜孉ttr銆備笅闈㈠氨榪欎簺瀵硅薄鐨勫姛鑳藉拰瀹炵幇鐨勬柟娉曚綔涓涓ぇ鑷寸殑浠嬬粛銆?
Document瀵硅薄浠h〃浜嗘暣涓猉ML鐨勬枃妗o紝鎵鏈夊叾瀹冪殑Node錛岄兘浠ヤ竴瀹氱殑欏哄簭鍖呭惈鍦―ocument瀵硅薄涔嬪唴錛屾帓鍒楁垚涓涓爲(wèi)褰㈢殑緇撴瀯錛岀▼搴忓憳鍙互閫氳繃閬嶅巻榪欓鏍?wèi)鏉ュ緱鍒癤ML鏂囨。鐨勬墍鏈夌殑鍐呭錛岃繖涔熸槸瀵筙ML鏂囨。鎿嶄綔鐨勮搗鐐廣傛垜浠繪槸鍏堥氳繃瑙f瀽XML婧愭枃浠惰屽緱鍒頒竴涓狣ocument瀵硅薄錛岀劧鍚庡啀鏉ユ墽琛屽悗緇殑鎿嶄綔銆傛澶栵紝Document榪樺寘鍚簡鍒涘緩鍏跺畠鑺傜偣鐨勬柟娉曪紝姣斿createAttribut()鐢ㄦ潵鍒涘緩涓涓狝ttr瀵硅薄銆傚畠鎵鍖呭惈鐨勪富瑕佺殑鏂規(guī)硶鏈夛細(xì)
createAttribute(String)錛氱敤緇欏畾鐨勫睘鎬у悕鍒涘緩涓涓狝ttr瀵硅薄錛屽茍鍙湪鍏跺悗浣跨敤setAttributeNode鏂規(guī)硶鏉ユ斁緗湪鏌愪竴涓狤lement瀵硅薄涓婇潰銆?
createElement(String)錛氱敤緇欏畾鐨勬爣絳懼悕鍒涘緩涓涓狤lement瀵硅薄錛屼唬琛╔ML鏂囨。涓殑涓涓爣絳撅紝鐒跺悗灝卞彲浠ュ湪榪欎釜Element瀵硅薄涓婃坊鍔犲睘鎬ф垨榪涜鍏跺畠鐨勬搷浣溿?
createTextNode(String)錛氱敤緇欏畾鐨勫瓧絎︿覆鍒涘緩涓涓猅ext瀵硅薄錛孴ext瀵硅薄浠h〃浜嗘爣絳炬垨鑰呭睘鎬т腑鎵鍖呭惈鐨勭函鏂囨湰瀛楃涓層傚鏋滃湪涓涓爣絳懼唴娌℃湁鍏跺畠鐨勬爣絳撅紝閭d箞鏍囩鍐呯殑鏂囨湰鎵浠h〃鐨凾ext瀵硅薄鏄繖涓狤lement瀵硅薄鐨勫敮涓瀛愬璞°?
getElementsByTagName(String)錛氳繑鍥炰竴涓狽odeList瀵硅薄錛屽畠鍖呭惈浜嗘墍鏈夌粰瀹氭爣絳懼悕瀛楃殑鏍囩銆?
getDocumentElement()錛氳繑鍥炰竴涓唬琛ㄨ繖涓狣OM鏍?wèi)鐨勬牴鑺傜偣鐨凟lement瀵硅薄錛屼篃灝辨槸浠h〃XML鏂囨。鏍瑰厓绱犵殑閭d釜瀵硅薄銆?
Node瀵硅薄鏄疍OM緇撴瀯涓渶涓哄熀鏈殑瀵硅薄錛屼唬琛ㄤ簡鏂囨。鏍?wèi)涓殑涓涓娊璞$殑鑺傜偣銆傚湪瀹為檯浣跨敤鐨勬椂鍊欙紝寰堝皯浼?xì)鐪熸鐨勭敤鍒癗ode榪欎釜瀵硅薄錛岃屾槸鐢ㄥ埌璇稿Element銆丄ttr銆乀ext絳塏ode瀵硅薄鐨勫瓙瀵硅薄鏉ユ搷浣滄枃妗c侼ode瀵硅薄涓鴻繖浜涘璞℃彁渚涗簡涓涓娊璞$殑銆佸叕鍏辯殑鏍廣傝櫧鐒跺湪Node瀵硅薄涓畾涔変簡瀵瑰叾瀛愯妭鐐硅繘琛屽瓨鍙栫殑鏂規(guī)硶錛屼絾鏄湁涓浜汵ode瀛愬璞★紝姣斿Text瀵硅薄錛屽畠騫朵笉瀛樺湪瀛愯妭鐐癸紝榪欎竴鐐規(guī)槸瑕佹敞鎰忕殑銆侼ode瀵硅薄鎵鍖呭惈鐨勪富瑕佺殑鏂規(guī)硶鏈夛細(xì)
appendChild(org.w3c.dom.Node)錛氫負(fù)榪欎釜鑺傜偣娣誨姞涓涓瓙鑺傜偣錛屽茍鏀懼湪鎵鏈夊瓙鑺傜偣鐨勬渶鍚庯紝濡傛灉榪欎釜瀛愯妭鐐瑰凡緇忓瓨鍦紝鍒欏厛鎶婂畠鍒犳帀鍐嶆坊鍔犺繘鍘匯?
getFirstChild()錛氬鏋滆妭鐐瑰瓨鍦ㄥ瓙鑺傜偣錛屽垯榪斿洖絎竴涓瓙鑺傜偣錛屽絳夌殑錛岃繕鏈塯etLastChild()鏂規(guī)硶榪斿洖鏈鍚庝竴涓瓙鑺傜偣銆?
getNextSibling()錛氳繑鍥炲湪DOM鏍?wèi)涓瓨q欎釜鑺傜偣鐨勪笅涓涓厔寮熻妭鐐癸紝瀵圭瓑鐨勶紝榪樻湁getPreviousSibling()鏂規(guī)硶榪斿洖鍏跺墠涓涓厔寮熻妭鐐廣?
getNodeName()錛氭牴鎹妭鐐圭殑綾誨瀷榪斿洖鑺傜偣鐨勫悕縐般?
getNodeType()錛氳繑鍥炶妭鐐圭殑綾誨瀷銆?
getNodeValue()錛氳繑鍥炶妭鐐圭殑鍊箋?
hasChildNodes()錛氬垽鏂槸涓嶆槸瀛樺湪鏈夊瓙鑺傜偣銆?
hasAttributes()錛氬垽鏂繖涓妭鐐規(guī)槸鍚﹀瓨鍦ㄦ湁灞炴с?
getOwnerDocument()錛氳繑鍥炶妭鐐規(guī)墍澶勭殑Document瀵硅薄銆?
insertBefore(org.w3c.dom.Node new錛宱rg.w3c.dom.Node ref)錛氬湪緇欏畾鐨勪竴涓瓙瀵硅薄鍓嶅啀鎻掑叆涓涓瓙瀵硅薄銆?
removeChild(org.w3c.dom.Node)錛氬垹闄ょ粰瀹氱殑瀛愯妭鐐瑰璞°?
replaceChild(org.w3c.dom.Node new錛宱rg.w3c.dom.Node old)錛氱敤涓涓柊鐨凬ode瀵硅薄浠f浛緇欏畾鐨勫瓙鑺傜偣瀵硅薄銆?
NodeList瀵硅薄錛岄【鍚嶆濅箟錛屽氨鏄唬琛ㄤ簡涓涓寘鍚簡涓涓垨鑰呭涓狽ode鐨勫垪琛ㄣ傚彲浠ョ畝鍗曠殑鎶婂畠鐪嬫垚涓涓狽ode鐨勬暟緇勶紝鎴戜滑鍙互閫氳繃鏂規(guī)硶鏉ヨ幏寰楀垪琛ㄤ腑鐨勫厓绱狅細(xì)
GetLength()錛氳繑鍥炲垪琛ㄧ殑闀垮害銆?
Item(int)錛氳繑鍥炴寚瀹氫綅緗殑Node瀵硅薄銆?
Element瀵硅薄浠h〃鐨勬槸XML鏂囨。涓殑鏍囩鍏冪礌錛岀戶鎵夸簬Node錛屼害鏄疦ode鐨勬渶涓昏鐨勫瓙瀵硅薄銆傚湪鏍囩涓彲浠ュ寘鍚湁灞炴э紝鍥犺孍lement瀵硅薄涓湁瀛樺彇鍏跺睘鎬х殑鏂規(guī)硶錛岃屼換浣昇ode涓畾涔夌殑鏂規(guī)硶錛屼篃鍙互鐢ㄥ湪Element瀵硅薄涓婇潰銆?
getElementsByTagName(String)錛氳繑鍥炰竴涓狽odeList瀵硅薄錛屽畠鍖呭惈浜嗗湪榪欎釜鏍囩涓叾涓嬬殑瀛愬瓩鑺傜偣涓叿鏈夌粰瀹氭爣絳懼悕瀛楃殑鏍囩銆?
getTagName()錛氳繑鍥炰竴涓唬琛ㄨ繖涓爣絳懼悕瀛楃殑瀛楃涓層?
getAttribute(String)錛氳繑鍥炴爣絳句腑緇欏畾灞炴у悕縐扮殑灞炴х殑鍊箋傚湪榪欏効闇瑕佷富瑕佺殑鏄紝搴斾負(fù)XML鏂囨。涓厑璁告湁瀹炰綋灞炴у嚭鐜幫紝鑰岃繖涓柟娉曞榪欎簺瀹炰綋灞炴у茍涓嶉傜敤銆傝繖鏃跺欓渶瑕佺敤鍒癵etAttributeNodes()鏂規(guī)硶鏉ュ緱鍒頒竴涓狝ttr瀵硅薄鏉ヨ繘琛岃繘涓姝ョ殑鎿嶄綔銆?
getAttributeNode(String)錛氳繑鍥炰竴涓唬琛ㄧ粰瀹氬睘鎬у悕縐扮殑Attr瀵硅薄銆?
Attr瀵硅薄浠h〃浜嗘煇涓爣絳句腑鐨勫睘鎬с侫ttr緇ф壙浜嶯ode錛屼絾鏄洜涓篈ttr瀹為檯涓婃槸鍖呭惈鍦‥lement涓殑錛屽畠騫朵笉鑳借鐪嬩綔鏄疎lement鐨勫瓙瀵硅薄錛屽洜鑰屽湪DOM涓瑼ttr騫朵笉鏄疍OM鏍?wèi)鐨勪竴閮ㄥ垎錛屾墍浠ode涓殑getparentNode()錛実etpreviousSibling()鍜実etnextSibling()榪斿洖鐨勯兘灝嗘槸null銆備篃灝辨槸璇達(dá)紝Attr鍏跺疄鏄鐪嬩綔鍖呭惈瀹冪殑Element瀵硅薄鐨勪竴閮ㄥ垎錛屽畠騫朵笉浣滀負(fù)DOM鏍?wèi)涓崟鐙殑涓涓妭鐐瑰嚭鐜般傝繖涓鐐瑰湪浣跨敤鐨勬椂鍊欒鍚屽叾瀹冪殑Node瀛愬璞$浉鍖哄埆銆?
闇瑕佽鏄庣殑鏄紝涓婇潰鎵璇寸殑DOM瀵硅薄鍦―OM涓兘鏄敤鎺ュ彛瀹氫箟鐨勶紝鍦ㄥ畾涔夌殑鏃跺欎嬌鐢ㄧ殑鏄笌鍏蜂綋璇█鏃犲叧鐨処DL璇█鏉ュ畾涔夌殑銆傚洜鑰岋紝DOM鍏跺疄鍙互鍦ㄤ換浣曢潰鍚戝璞$殑璇█涓疄鐜幫紝鍙瀹冨疄鐜頒簡DOM鎵瀹氫箟鐨勬帴鍙e拰鍔熻兘灝卞彲浠ヤ簡銆傚悓鏃訛紝鏈変簺鏂規(guī)硶鍦―OM涓茍娌℃湁瀹氫箟錛屾槸鐢↖DL鐨勫睘鎬ф潵琛ㄨ揪鐨勶紝褰撹鏄犲皠鍒板叿浣撶殑璇█鏃訛紝榪欎簺灞炴ц鏄犲皠涓虹浉搴旂殑鏂規(guī)硶銆?
路 2錛嶥OM瀹炰緥
鏈変簡涓婇潰鐨勪粙緇嶏紝鐩鎬俊浣犲DOM鐞嗚В鐨勬洿澶氫簡鍚с備笅闈㈢殑渚嬪瓙灝嗚浣犲DOM鏇村姞鐔熸?zhèn)夎典h潵銆?
鍏堣璇磋繖涓緥瀛愬埌搴曡鍋氱殑鏄粈涔堝惂錛屾垜浠笇鏈涘湪涓涓悕涓簂ink.xml鏂囦歡涓繚瀛樹簡涓浜沀RL鍦板潃錛岄氳繃涓涓畝鍗曠殑紼嬪簭錛屾垜浠彲浠ラ氳繃DOM鎶婅繖浜沀RL璇誨嚭騫舵樉紺哄嚭鏉ワ紝涔熷彲浠ュ弽榪囨潵鍚戣繖涓猉ML鏂囦歡涓啓鍏ュ姞鍏ョ殑URL鍦板潃銆傚緢綆鍗曪紝鍗村緢瀹炵敤錛屼篃瓚沖鏉ヤ緥紺篋OM鐨勭粷澶ч儴鍒嗙敤娉曚簡銆?
XML鏂囦歡鏈韓涓嶅鏉傦紝灝變笉緇欏嚭瀹冪殑DTD浜嗐俵ink.xml:
System.out.print("Author: ");
System.out.println(link.getElementsByTagName("author").item(0).getFirstChild().getNodeValue());
System.out.print("Date: ");
Element linkdate=(Element) link.getElementsByTagName("date").item(0);
String day=linkdate.getElementsByTagName("day").item(0).getFirstChild().getNodeValue();
String month=linkdate.getElementsByTagName("month").item(0).getFirstChild().getNodeValue();
String year=linkdate.getElementsByTagName("year").item(0).getFirstChild().getNodeValue();
System.out.println(day+"-"+month+"-"+year);
System.out.print("Description: ");
System.out.println(link.getElementsByTagName("description").item(0).getFirstChild().getNodeValue());
System.out.println();
}
涓婇潰鐨勪唬鐮佺墖鏂氨瀹屾垚浜嗗XML鏂囨。鍐呭鐨勬牸寮忓寲杈撳嚭銆傚彧瑕佹敞鎰忓埌涓浜涚粏鑺傜殑闂錛屾瘮濡俫etFirstChile()鏂規(guī)硶鍜実etElementsByTagName()鏂規(guī)硶鐨勪嬌鐢紝榪欎簺榪樻槸姣旇緝瀹規(guī)槗鐨勩?
涓嬮潰鐨勫唴瀹癸紝灝辨槸鍦ㄤ慨鏀逛簡DOM鏍?wèi)鍚庨噸鏂板啓鍏ュ埌XML鏂囨。涓幓鐨勯棶棰樹簡銆傝繖涓▼搴忓悕涓簒mlwrite.java銆傚湪JAXP1.0鐗堟湰涓紝騫舵病鏈夌洿鎺ョ殑綾誨拰鏂規(guī)硶鑳藉澶勭悊XML鏂囨。鐨勫啓鍏ラ棶棰橈紝闇瑕佸熷姪鍏跺畠鍖呬腑鐨勪竴浜涜緟鍔╃被銆傝屽湪JAXP1.1鐗堟湰涓紝寮曞叆浜嗗XSLT鐨勬敮鎸侊紝鎵璋揦SLT錛屽氨鏄XML鏂囨。榪涜鍙樻崲錛圱ranslation錛夊悗錛屽緱鍒頒竴涓柊鐨勬枃妗g粨鏋勩傚埄鐢ㄨ繖涓柊鍔犲叆鐨勫姛鑳斤紝鎴戜滑灝辮兘澶熷緢鏂逛究鐨勬妸鏂扮敓鎴愭垨鑰呬慨鏀瑰悗鐨凞OM鏍?wèi)浠庢柊鍐欏洖鍒癤ML鏂囦歡涓幓浜嗭紝涓嬮潰鎴戜滑鏉ョ湅鐪嬩唬鐮佺殑瀹炵幇錛岃繖孌典唬鐮佺殑涓昏鍔熻兘鏄悜links.xml鏂囦歡涓姞鍏ヤ竴涓柊鐨刲ink鑺傜偣錛?
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
鏂板紩鍏ョ殑java.xml.transform鍖呬腑鐨勫嚑涓被錛屽氨鏄敤鏉ュ鐞哫SLT鍙樻崲鐨勩?
鎴戜滑甯屾湜鍦ㄤ笂闈㈢殑XML鏂囦歡涓姞鍏ヤ竴涓柊鐨刲ink鑺傜偣錛屽洜鑰岄鍏堣繕鏄璇誨叆links.xml鏂囦歡錛屾瀯寤轟竴涓狣OM鏍?wèi)锛岀劧鍚庡啀瀵箻q欎釜DOM鏍?wèi)杩涜淇敼锛堟氛d姞鑺傜偣錛夛紝鏈鍚庢妸淇敼鍚庣殑DOM鍐欏洖鍒發(fā)inks.xml鏂囦歡涓細(xì)
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.parse("links.xml");
doc.normalize();
//---鍙栧緱鍙橀噺----
String text="Hanzhong麓s Homepage";
String url="www.hzliu.com";
String author="Hzliu Liu";
String discription="A site from Hanzhong Liu, give u lots of suprise!!!";
涓轟簡鐪嬫竻閲嶇偣錛岀畝鍖栫▼搴忥紝鎴戜滑鎶婅鍔犲叆鐨勫唴瀹圭‖緙栫爜鍒拌蹇哠tring瀵硅薄涓紝鑰屽疄闄呮搷浣滀腑錛屽線寰鍒╃敤涓涓晫闈㈡潵鎻愬彇鐢ㄦ埛杈撳叆錛屾垨鑰呴氳繃JDBC浠庢暟鎹簱涓彁鍙栨兂瑕佺殑鍐呭銆?
Text textseg;
Element link=doc.createElement("link");
棣栧厛搴旇鏄庝簡鐨勬槸錛屾棤璁轟粈涔堢被鍨嬬殑Node錛孴ext鍨嬬殑涔熷ソ錛孉ttr鍨嬬殑涔熷ソ錛孍lement鍨嬬殑涔熷ソ錛屽畠浠殑鍒涘緩閮芥槸閫氳繃Document瀵硅薄涓殑createXXX()鏂規(guī)硶鏉ュ垱寤虹殑錛圶XX浠h〃鍏蜂綋瑕佸垱寤虹殑綾誨瀷錛夛紝鍥犳錛屾垜浠鍚慩ML鏂囨。涓坊鍔犱竴涓猯ink欏圭洰錛岄鍏堣鍒涘緩涓涓猯ink瀵硅薄錛?
Element linktext=doc.createElement("text");
textseg=doc.createTextNode(text);
linktext.appendChild(textseg);
link.appendChild(linktext);
Element linkurl=doc.createElement("url");
textseg=doc.createTextNode(url);
linkurl.appendChild(textseg);
link.appendChild(linkurl);
Element linkauthor=doc.createElement("author");
textseg=doc.createTextNode(author);
linkauthor.appendChild(textseg);
link.appendChild(linkauthor);
java.util.Calendar rightNow = java.util.Calendar.getInstance();
String day=Integer.toString(rightNow.get(java.util.Calendar.DAY_OF_MONTH));
String month=Integer.toString(rightNow.get(java.util.Calendar.MONTH));
String year=Integer.toString(rightNow.get(java.util.Calendar.YEAR));
Element linkdate=doc.createElement("date");
Element linkdateday=doc.createElement("day");
textseg=doc.createTextNode(day);
linkdateday.appendChild(textseg);
Element linkdatemonth=doc.createElement("month");
textseg=doc.createTextNode(month);
linkdatemonth.appendChild(textseg);
Element linkdateyear=doc.createElement("year");
textseg=doc.createTextNode(year);
linkdateyear.appendChild(textseg);
linkdate.appendChild(linkdateday);
linkdate.appendChild(linkdatemonth);
linkdate.appendChild(linkdateyear);
link.appendChild(linkdate);
Element linkdiscription=doc.createElement("description");
textseg=doc.createTextNode(discription);
linkdiscription.appendChild(textseg);
link.appendChild(linkdiscription);
鍒涘緩鑺傜偣鐨勮繃紼嬪彲鑳芥湁浜涘崈綃囦竴寰嬶紝浣嗛渶瑕佹敞鎰忕殑鍦版柟鏄紝瀵笶lement涓墍鍖呭惈鐨則ext錛堝湪DOM涓紝榪欎簺text涔熸槸浠h〃浜嗕竴涓狽ode鐨勶紝鍥犳涔熷繀欏諱負(fù)瀹冧滑鍒涘緩鐩稿簲鐨刵ode錛夛紝涓嶈兘鐩存帴鐢‥lement瀵硅薄鐨剆etNodeValue()鏂規(guī)硶鏉ヨ緗繖浜泃ext鐨勫唴瀹癸紝鑰岄渶瑕佺敤鍒涘緩鐨凾ext瀵硅薄鐨剆etNodeValue()鏂規(guī)硶鏉ヨ緗枃鏈紝榪欐牱鎵嶈兘澶熸妸鍒涘緩鐨凟lement鍜屽叾鏂囨湰鍐呭娣誨姞鍒癉OM鏍?wèi)涓傜湅鐪嬪墠闈㈢殑浠g爜錛屼綘浼?xì)鏇村ソ鐨勭悊瑙q欎竴鐐癸細(xì)
doc.getDocumentElement().appendChild(link);
鏈鍚庯紝涓嶈蹇樿鎶婂垱寤哄ソ鐨勮妭鐐規(guī)坊鍔犲埌DOM鏍?wèi)涓侱ocument綾葷殑getDocumentElement()鏂規(guī)硶錛岃繑鍥炰唬琛ㄦ枃妗f牴鑺傜偣鐨凟lement瀵硅薄銆傚湪XML鏂囨。涓紝鏍硅妭鐐逛竴瀹氭槸鍞竴鐨勩?
TransformerFactory tFactory =TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new java.io.File("links.xml"));
transformer.transform(source, result);
鐒跺悗灝辨槸鐢╔SLT鎶奃OM鏍?wèi)杈撳囖Z簡銆傝繖閲岀殑TransformerFactory涔熷悓鏍峰簲鐢ㄤ簡宸ュ巶妯″紡錛屼嬌寰楀叿浣撶殑浠g爜鍚屽叿浣撶殑鍙樻崲鍣ㄦ棤鍏熾傚疄鐜扮殑鏂規(guī)硶鍜孌ocumentBuilderFactory鐩稿悓錛岃繖鍎垮氨涓嶈禈榪頒簡銆俆ransformer綾葷殑transfrom鏂規(guī)硶鎺ュ彈涓や釜鍙傛暟銆佷竴涓暟鎹簮Source鍜屼竴涓緭鍑虹洰鏍嘡esult銆傝繖閲屽垎鍒嬌鐢ㄧ殑鏄疍OMSource鍜孲treamResult錛岃繖鏍峰氨鑳藉鎶奃OM鐨勫唴瀹硅緭鍑哄埌涓涓緭鍑烘祦涓紝褰撹繖涓緭鍑烘祦鏄竴涓枃浠剁殑鏃跺欙紝DOM鐨勫唴瀹瑰氨琚啓鍏ュ埌鏂囦歡涓幓浜嗐?br />