锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
聽聽聽聽聽聽鍗庝負(fù)涓鑸槸鍛ㄤ簲闈㈣瘯,鍏跺疄鎴戝嚑涔庢病鍘誨崕涓洪潰璇?鏈夊嚑嬈″崕涓烘墦鐢?shù)璇潣q囨潵,鎴戞伆濂芥湁鍏朵粬鐨勯潰璇?鎵浠ュ幓涓嶄簡,榪欐鍙嶆闂茬潃涔熸槸闂茬潃,鎵浠?鍦ㄤ笂鍗堟帴鍒扮數(shù)璇濆悗,涓嬪崍鍧愬叕杞﹀幓浜?
聽聽聽聽聽聽鎴戜綇鐨勫湴鏂瑰幓鍗庝負(fù)鍩哄湴姣旇緝榪?鍧愬叕杞﹂兘瑕?鍏僐MB,涓嬩簡杞?鎵撲簡鐢?shù)璇?緇忚繃鐢?shù)璇濇寚鐐?緇堜簬鎵懼埌浜嗛潰璇曞湴鐐?澶栭潰濂藉喎,榪涘幓灝變笉鎬庝箞鍐蜂簡,娌¤鍒殑,鎷胯搗璇曞嵎灝卞紑濮嬪仛棰?
聽聽聽聽聽聽棰樼洰鐨勯毦搴﹀湪鎴戦鏂欎箣涓?渚濇垜鐨勬按騫充篃灝辨嬁涓?0鍒嗗乏鍙崇殑鏍峰瓙(涓鑸殑鍏徃鎴戝彲浠ユ嬁80浠ヤ笂,^_^),
浠ゆ垜鎰忓鐨勬槸,絎旇瘯瀹屽悗,闈㈣瘯鎶鏈殑鑰冨畼騫舵病鎬庝箞鐪嬫垜鐨勭瓟妗?鑰屾槸鐩存帴鍜屾垜鑱婅搗鎶鏈柟闈㈢殑涓滆タ,闂殑寰堣緇?鐗瑰埆鏄棶鍒板叿浣撳仛榪囩殑欏圭洰鏃?闂殑姣旇緝浠旂粏,瑕佷笉鏄垜鐪熺殑鍋氳繃,闈炵┛甯笉鍙?鍛靛懙,闂簡欏圭洰,灝卞紑濮嬮棶鎶鏈?鍙鎴戠畝鍘嗕笂鍐欑殑鎶鏈?浠栭兘浼?xì)闂殑寰堜粩缁?鏈夊嚑涓湴鏂?鎴戣寰椾笉鏄緢娓呮,涔熷氨鎵撳搱鍝堣繃鍘?浠栦篃娌¤浠涔?灝辮繖鏍烽棶浜嗗ぇ姒備竴涓閽熷ご,浠栨墠璇?濂戒簡,浣犲湪榪欑瓑涓?灝辮蛋浜?鎴戝ソ涓嶅鏄撹浜嗕竴鍙f皵,蹇冮噷涔熸病浠涔堝簳,絳変簡10鍒嗛挓鐨勬牱瀛?鏉ヤ簡涓涓瀵兼ā鏍風(fēng)殑浜虹墿,鎷夸簡鏈瑪璁版湰,灝卞潗鍦ㄦ垜鏃佽竟,鍜屾垜鑱婅搗浜嗕竴浜涚湅浼肩悙紕庣殑涓滆タ,鍏跺疄鍦ㄦ殫閲岃冨療鐨勯棶棰?鎬諱綋鎰熻榪樿繃鐨勫幓,瀹屼簡,浠栬,鎴戣冭檻涓?灝辮蛋浜?鍑哄幓鐨勬椂鍊欐垜鍜岄潰璇曟垜鎶鏈殑鑰冨畼涓璧峰嚭鍘?浠栭棶鎴戞劅瑙夋庝箞鏍?鎴戣榪樿,浠栬榪囧嚑澶╀細(xì)鐢?shù)璇濋氱煡鎴?鍛靛懙,褰撴椂搴旇闂笅浠栨満浼?xì)澶т?鍙儨浜?鐜板湪涔熷彧濂藉湪瀹剁瓑緇撴灉浜?涓嶈繃涓崥閭h竟濡傛灉瑕佹垜椹笂涓婄彮鐨勮瘽,鎴戣繕鐪熶笉濂芥妷鎷?鍥犱負(fù)涓崥閭h竟鏄仛澶栧寘,鑰屼笖瑕佸嚭宸?铏界劧钖祫鏈夌偣璇變漢,浣嗘瘯绔熸劅瑙夋病榪涘崕涓哄ソ.
聽聽聽聽聽聽澶變笟鐨勬棩瀛愮殑紜瘮杈冩灟鐕?闂茬潃娌′簨灝遍殢渚垮啓鍐?浜?鍛靛懙,寰堟櫄浜?瑕佺潯浜?...
Parsing XML
鎴栬浣犳兂瑕佸仛鐨勭涓浠朵簨鎯呭氨鏄В鏋愪竴涓煇縐嶇被鍨嬬殑XML鏂囨。錛岀敤dom4j寰堝鏄撳仛鍒般傝鐪嬩笅闈㈢殑紺鴻寖浠g爜錛?/p>
import java.net.URL;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class Foo {
public Document parse(URL url) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(url);
return document;
}
}
浣跨敤榪唬鍣紙Iterators錛?/p>
鎴戜滑鍙互閫氳繃澶氱鏂規(guī)硶鏉ユ搷浣淴ML鏂囨。錛岃繖浜涙柟娉曡繑鍥瀓ava閲屾爣鍑嗙殑榪唬鍣紙Iterators錛夈備緥濡傦細(xì)
public void bar(Document document) throws DocumentException {
Element root = document.getRootElement();
//榪唬鏍瑰厓绱犱笅闈㈢殑鎵鏈夊瓙鍏冪礌
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
//澶勭悊浠g爜
}
//榪唬鏍瑰厓绱犱笅闈㈠悕縐頒負(fù)"foo"鐨勫瓙鍏冪礌
for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
Element foo = (Element) i.next();
//澶勭悊浠g爜
}
// 榪唬鏍瑰厓绱犵殑灞炴ttributes錛夊厓绱?br />for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute = (Attribute) i.next();
// do something
}
}
寮哄ぇ鐨刋Path瀵艱埅
鍦╠om4j涓璛Path鍙互琛ㄧず鍑哄湪XML鏍?wèi)鐘毒l撴瀯涓殑Document鎴栬呬換鎰忕殑鑺傜偣錛圢ode錛夛紙渚嬪錛欰ttribute錛孍lement 鎴栬?ProcessingInstruction絳夛級銆傚畠鍙互浣垮湪鏂囨。涓鏉傜殑鎿嶄綔浠呴氳繃涓琛屼唬鐮佸氨鍙互瀹屾垚銆備緥濡傦細(xì)
public void bar(Document document) {
List list = document.selectNodes( "http://foo/bar" );
Node node = document.selectSingleNode( "http://foo/bar/author" );
String name = node.valueOf( "@name" );
}
濡傛灉浣犳兂寰楀埌涓涓猉HTML鏂囨。涓殑鎵鏈夎秴鏂囨湰閾炬帴錛坔ypertext links錛変綘鍙互浣跨敤涓嬮潰鐨勪唬鐮侊細(xì)
public void findLinks(Document document) throws DocumentException {
List list = document.selectNodes( "http://a/@href" );
for (Iterator iter = list.iterator(); iter.hasNext(); ) {
Attribute attribute = (Attribute) iter.next();
String url = attribute.getValue();
}
}
濡傛灉浣犻渶瑕佸叧浜嶺Path璇█鐨勪換浣曞府鍔╋紝鎴戜滑寮虹儓鎺ㄨ崘榪欎釜绔欑偣Zvon tutorial浠栦細(xì)閫氳繃涓涓竴涓殑渚嬪瓙寮曞浣犲涔?fàn)銆?/p>
蹇熼亶鍘嗭紙F(tuán)ast Looping錛?/p>
濡傛灉浣犱笉寰椾笉閬嶅巻涓涓潪甯稿ぇ鐨刋ML鏂囨。錛岀劧鍚庢墠鍘繪墽琛岋紝鎴戜滑寤鴻浣犱嬌鐢ㄥ揩閫熼亶鍘嗘柟娉曪紙fast looping method錛夛紝瀹冨彲浠ラ伩鍏嶄負(fù)姣忎竴涓驚鐜殑鑺傜偣鍒涘緩涓涓凱浠e櫒瀵硅薄,濡備笅鎵紺猴細(xì)
public void treeWalk(Document document) {
treeWalk( document.getRootElement() );
}
public void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );
}
else {
// do something....
}
}
}
鐢熸垚涓涓柊鐨刋ML鏂囨。瀵硅薄
鍦╠om4j涓綘鍙兘甯稿父甯屾湜鐢ㄧ▼搴忕敓鎴愪竴涓猉ML鏂囨。瀵硅薄錛屼笅闈㈢殑紼嬪簭涓轟綘榪涜浜嗙ず鑼冿細(xì)
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class Foo {
public Document createDocument() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement( "root" );
Element author1 = root.addElement( "author" )
.addAttribute( "name", "James" )
.addAttribute( "location", "UK" )
.addText( "James Strachan" );
Element author2 = root.addElement( "author" )
.addAttribute( "name", "Bob" )
.addAttribute( "location", "US" )
.addText( "Bob McWhirter" );
return document;
}
}
灝嗕竴涓枃妗e璞″啓鍏ユ枃浠朵腑
灝嗕竴涓枃妗e璞″啓鍏riter瀵硅薄鐨勪竴涓畝鍗曞揩閫熺殑閫斿緞鏄氳繃write()鏂規(guī)硶銆?/p>
FileWriter out = new FileWriter( "foo.xml" );
document.write( out );
濡傛灉浣犳兂鏀瑰彉杈撳嚭鏂囦歡鐨勬帓鐗堟牸寮忥紝姣斿浣犳兂瑕佷竴涓紓浜殑鏍煎紡鎴栬呮槸涓涓揣鍑戠殑鏍煎紡錛屾垨鑰呬綘鎯崇敤Writer 瀵硅薄鎴栬匫utputStream 瀵硅薄鏉ユ搷浣滐紝閭d箞浣犲彲浠ヤ嬌鐢╔MLWriter 綾匯?/p>
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Foo {
public void write(Document document) throws IOException {
// 鍐欏叆鏂囦歡
XMLWriter writer = new XMLWriter(
new FileWriter( "output.xml" )
);
writer.write( document );
writer.close();
// 浠ヤ竴縐嶄紭闆呯殑鏍煎紡鍐欏叆System.out瀵硅薄
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter( System.out, format );
writer.write( document );
// 浠ヤ竴縐嶇揣鍑戠殑鏍煎紡鍐欏叆System.out瀵硅薄
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
writer.write( document );
}
}
杞寲涓哄瓧絎︿覆錛屾垨鑰呬粠瀛楃涓茶漿鍖?/p>
濡傛灉浣犳湁涓涓枃妗o紙Document錛夊璞℃垨鑰呬換浣曚竴涓妭鐐癸紙Node錛夊璞$殑寮曠敤錛坮eference錛夛紝璞″睘鎬э紙Attribute錛夋垨鑰呭厓绱狅紙Element錛夛紝浣犲彲浠ラ氳繃asXML()鏂規(guī)硶鎶婂畠杞寲涓轟竴涓粯璁ょ殑XML瀛楃涓詫細(xì)
Document document = ...;
String text = document.asXML();
濡傛灉浣犳湁涓浜沊ML鍐呭鐨勫瓧絎︿覆琛ㄧず錛屼綘鍙互閫氳繃DocumentHelper.parseText()鏂規(guī)硶灝嗗畠閲嶆柊杞寲涓烘枃妗o紙Document錛夊璞★細(xì)
String text = "
Document document = DocumentHelper.parseText(text);
閫氳繃XSLT鏍峰紡鍖栨枃妗o紙Document錛?/p>
浣跨敤Sun鍏徃鎻愪緵鐨凧AXP API灝哫SLT 搴旂敤鍒版枃妗o紙Document錛変笂鏄緢綆鍗曠殑銆傚畠鍏佽浣犱嬌鐢ㄤ換浣曠殑XSLT寮曟搸錛堜緥濡傦細(xì)Xalan鎴朣AXON絳夛級鏉ュ紑鍙戙備笅闈㈡槸涓涓嬌鐢↗AXP鍒涘緩涓涓漿鍖栧櫒錛坱ransformer錛夛紝鐒跺悗灝嗗畠搴旂敤鍒版枃妗o紙Document錛変笂鐨勪緥瀛愶細(xì)
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import org.dom4j.Document;
import org.dom4j.io.DocumentResult;
import org.dom4j.io.DocumentSource;
public class Foo {
public Document styleDocument(
Document document,
String stylesheet
) throws Exception {
// 浣跨敤 JAXP 鍔犺澆杞寲鍣?br />TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(
new StreamSource( stylesheet )
);
// 鐜板湪鏉ユ牱寮忓寲涓涓枃妗o紙Document錛?br />DocumentSource source = new DocumentSource( document );
DocumentResult result = new DocumentResult();
transformer.transform( source, result );
// 榪斿洖緇忚繃鏍峰紡鍖栫殑鏂囨。錛圖ocument錛?br />Document transformedDoc = result.getDocument();
return transformedDoc;
}
}
![]() |