锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
XML鏄幇浠g▼搴忎腑涓涓繀涓嶅彲灝戠殑緇勬垚閮ㄥ垎錛屼篃鏄笘鐣屼笂鍙戝睍鏈蹇殑鎶鏈箣涓銆傚畠鐨勪富瑕佺洰鐨勬槸浠ョ粨鏋勫寲鐨勬柟寮忔潵琛ㄧず鏁版嵁錛屽湪鏌愪簺鏂歸潰錛孹ML涔熺被浼間簬鏁版嵁搴擄紝鎻愪緵鏁版嵁鐨勭粨鏋勫寲瑙嗗浘銆?br />
XML錛堝彲鎵╁睍鏍囪璇█錛夋槸浠庣О涓篠GML錛堟爣鍑嗛氱敤鏍囪璇█錛夊彂灞曡屾潵鐨勶紝SGML鐨勪富瑕佺洰鐨勬槸瀹氫箟浣跨敤鏍囩鏉ヨ〃紺烘暟鎹殑鏍囪璇█鐨勮娉曘傚熀浜嶴GML鐨勯噸瑕佽璦涔嬩竴灝辨槸钁楀悕鐨凥TML.
鏍囩鐢卞寘鍥村湪涓涓皬浜庡彿<鍜屼竴涓ぇ浜庡彿>涔嬮棿鐨勬枃鏈粍鎴?璧峰鏍囩(tag)琛ㄧず涓涓壒瀹氬尯鍩熺殑寮濮?渚嬪<start>;緇撴潫鏍囩瀹氫箟浜嗕竴涓尯鍩熺殑緇撴潫,闄や簡鍦ㄥ皬浜庡彿涔嬪悗绱ц窡涓涓枩綰垮鍜岃搗濮嬫爣絳句竴鑷?渚嬪</end>.涓句緥璇存槑鏍囩濡備笅:
<member id=“007”>閭﹀痙</member>涓?宸﹁竟鐨?lt;member id=“007”>鏄搗濮嬫爣絳?閭﹀痙鏄爣絳句腑鐨勬枃瀛?007鏄睘鎬ttribute, </member >鏄粨鏉熸爣絳?
XML鐨勫彂灞?/strong>
鐢變簬SGML涓瓨鍦ㄧ壒孌婅岄殢鎰忕殑璇硶(濡傛爣絳劇殑闈炲祵濂椾嬌鐢?,浣垮緱寤虹珛涓涓猄GML璇█鐨勮В鏋愬櫒鎴愪簡涓欏硅壈宸ㄧ殑浠誨姟,榪欎簺鍥伴毦瀵艱嚧浜哠GML涓鐩村仠姝ヤ笉鍓?
XML閫氳繃鐩稿涓ユ牸鐨勮娉曡瀹氫嬌寰楀緩绔嬩竴涓猉ML瑙f瀽鍣ㄨ瀹規槗寰楀,榪欎簺璇硶鍖呮嫭:
1錛変換浣曡搗濮嬫爣絳鵑兘蹇呴』鏈変竴涓粨鏉熸爣絳俱?br />
2錛夊彲浠ラ噰鐢ㄥ彟涓縐嶇畝鍖栬娉曪紝鍙互鍦ㄤ竴涓爣絳句腑鍚屾椂琛ㄧず璧峰鍜岀粨鏉熸爣絳俱傝繖縐嶈娉曟槸鍦ㄥぇ浜庣鍙峰墠绱ц窡涓涓枩綰?.濡?lt;tag />絳夊悓浜?lt;tag></tag>.
3錛夋爣絳懼繀欏繪寜鐓у悎閫傜殑欏哄簭榪涜宓屽錛屽湪娌℃湁鍏抽棴鍐呴儴鑺傜偣涔嬪墠涓嶈兘鍏抽棴澶栭儴鑺傜偣銆?br />
4錛夋墍鏈夌殑鐗規ч兘蹇呴』鏈夊鹼紝鐗規х殑鍊煎懆鍥村簲璇ュ姞涓婂弻寮曞彿銆?/p>
XML鏂囨。紺轟緥
<?xml version="1.0" encoding="GBK"?>
<members>
<member name="Andy">
<age>25</age>
<title>JSE</title>
</member>
<member name="Bill">
<age>35</age>
<title>SSE</title>
</member>
<member name="Cindy">
<age>45</age>
<title>PM</title>
</member>
<member name="Douglas">
<age>45</age>
<title>GM</title>
</member>
</members>
<?xml version=“1.0” encoding=“GBK”?>鏄疿ML搴忚█錛岃繖涓琛屼唬鐮佸憡璇夎В鏋愬櫒鏂囦歡灝嗘寜XML瑙勫垯榪涜瑙f瀽錛?GBK鍒跺畾浜嗘鏂囦歡鐨勭紪鐮佹柟寮忋?br /> <members>鏄枃妗g殑鏍硅妭鐐癸紝涓涓猉ML涓湁涓斿彧鏈変竴涓牴鑺傜偣錛屽惁鍒欎細閫犳垚瑙f瀽澶辮觸銆?br /> <member name=“Andy”>銆傘傘?lt;/member>鏄牴鑺傜偣涓嬮潰鐨勫瓙鑺傜偣錛宯ame鏄叾鐗規э紝鐗規х殑鍊間負Andy銆傝繖涓瓙鑺傜偣涓嬮潰鏈塧ge鍜宼itle涓や釜瀛愯妭鐐廣?/p>
XML鐨勭敤閫?/strong>
浠ユ枃鏈殑褰㈠紡瀛樺偍鏁版嵁,榪欐牱鐨勫艦寮忛備簬鏈哄櫒闃呰,瀵逛簬浜洪槄璇諱篃鐩稿鏂逛究.
浣滀負紼嬪簭鐨勯厤緗枃浠朵嬌鐢?濡傝憲鍚嶇殑web.xml,struts-config.xml
Ajax紼嬪簭浼犻掓暟鎹殑杞戒綋.
WebService,SOAP鐨勫熀紜.
閽堝XML鐨凙PI
灝哫ML瀹氫箟涓轟竴縐嶈璦涔嬪悗錛屽氨鍑虹幇浜嗕嬌鐢ㄥ父瑙佺殑緙栫▼璇█錛堝Java錛夋潵鍚屾椂琛ㄧ幇鍜屽鐞哫ML浠g爜鐨勯渶姹傘?/p>
棣栧厛鍑虹幇鐨勬槸Java涓婄殑SAX錛圫imple API for XML錛夐」鐩係AX鎻愪緵浜嗕竴涓熀浜庝簨浠剁殑XML瑙f瀽鐨凙PI銆備粠鍏舵湰璐ㄤ笂鏉ヨ錛孲AX瑙f瀽鍣ㄤ粠鏂囦歡鐨勫紑澶村嚭鍙戯紝浠庡墠鍚戝悗瑙f瀽錛屾瘡褰撻亣鍒拌搗濮嬫爣絳炬垨鑰呯粨鏉熸爣絳俱佺壒鎬с佹枃鏈垨鑰呭叾浠栫殑XML璇硶鏃訛紝灝變細瑙﹀彂涓涓簨浠躲傜劧鍚庯紝褰撲簨浠跺彂鐢熸椂錛屽叿浣撹鎬庝箞鍋氬氨鐢卞紑鍙戜漢鍛樺喅瀹氥?/p>
鍥犱負SAX瑙f瀽鍣ㄤ粎浠呮寜鐓ф枃鏈殑鏂瑰紡鏉ヨВ鏋愬畠浠紝鎵浠AX鏇磋交閲忋佹洿蹇熴傝屽畠浠殑涓昏緙虹偣鏄湪瑙f瀽涓棤娉曞仠姝€佸悗閫鎴栬呬笉浠庢枃浠跺紑濮嬶紝鐩存帴璁塊棶XML緇撴瀯涓殑鎸囧畾閮ㄥ垎銆?/p>
DOM鏄拡瀵筙ML鐨勫熀浜庢爲鐨凙PI銆傚畠鍏蟲敞鐨勪笉浠呬粎鏄В鏋怷ML浠g爜錛岃屾槸浣跨敤涓緋誨垪浜掔浉鍏寵仈鐨勫璞℃潵琛ㄧず榪欎簺浠g爜錛岃岃繖浜涘璞″彲浠ヨ淇敼涓旀棤闇閲嶆柊瑙f瀽浠g爜灝辮兘鐩存帴璁塊棶瀹冧滑銆?/p>
浣跨敤DOM錛屽彧闇瑙f瀽浠g爜涓嬈℃潵鍒涘緩涓涓爲鐨勬ā鍨嬶紱鏌愪簺鏃跺欎細浣跨敤SAX瑙f瀽鍣ㄦ潵瀹屾垚瀹冦傚湪榪欎釜鍒濆瑙f瀽榪囩▼涔嬪悗錛孹ML宸茬粡瀹屽叏閫氳繃DOM妯″瀷鏉ヨ〃鐜板嚭鏉ワ紝鍚屾椂涔熶笉鍐嶉渶瑕佸師濮嬬殑浠g爜銆傚敖綆OM姣擲AX鎱㈠緢澶氾紝鑰屼笖錛屽洜涓哄垱寤轟簡鐩稿綋澶氱殑瀵硅薄鑰岄渶瑕佹洿澶氱殑寮閿錛屼絾鐢變簬瀹冧嬌鐢ㄤ笂鐨勭畝渚匡紝鍥犺屾垚涓篧eb嫻忚鍣ㄥ拰JavaScript鏈鍠滄鐨勬柟娉曘?/p>
鏈鏂逛究鐨刋ML瑙f瀽鍒╁櫒-dom4j
Dom4j鏄竴涓槗鐢ㄧ殑銆佸紑婧愮殑搴擄紝鐢ㄤ簬XML錛孹Path鍜孹SLT銆傚畠搴旂敤浜嶫ava騫沖彴錛岄噰鐢ㄤ簡Java闆嗗悎妗嗘灦騫跺畬鍏ㄦ敮鎸丏OM錛孲AX鍜孞AXP.
sax鍜宒om鏈韓鐨刟pi閮芥瘮杈冨鏉?涓嶆槗浣跨敤,鑰屽紑婧愬寘dom4j鍗寸患鍚堜簡浜岃呯殑浼樼偣,灞忚斀浜嗘櫐娑╃殑緇嗚妭,灝佽浜嗕竴緋誨垪綾誨拰鎺ュ彛浠ユ柟渚跨敤鎴蜂嬌鐢ㄥ畠鏉ヨ鍐橷ML.
Dom4j涓嬭澆
瑕佷嬌鐢╠om4j璇誨啓XML鏂囨。,闇瑕佸厛涓嬭澆dom4j鍖?dom4j瀹樻柟緗戠珯鍦?http://www.dom4j.org/ 鐩墠鏈鏂癲om4j鍖呬笅杞藉湴鍧:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip
瑙e紑鍚庢湁涓や釜鍖?浠呮搷浣淴ML鏂囨。鐨勮瘽鎶奷om4j-1.6.1.jar鍔犲叆宸ョ▼灝卞彲浠ヤ簡,濡傛灉闇瑕佷嬌鐢╔Path鐨勮瘽榪橀渶瑕佸姞鍏ュ寘jaxen-1.1-beta-7.jar.
浣跨敤dom4j璇誨啓xml鐨勪竴浜涘父鐢ㄥ璞?/strong>
1.Document:鏂囨。瀵硅薄,瀹冧唬琛ㄧ潃鏁寸瘒xml鏂囨。.
2.Element:鑺傜偣鍏冪礌,瀹冧唬琛ㄧ潃xml鏂囨。涓殑涓涓妭鐐瑰厓绱?濡傚墠闈㈢殑<age>25</age>灝辨槸涓涓狤lement.鍏跺?鏂囨湰鍊?涓?5.
3.Attribute:鑺傜偣灞炴?濡傚墠闈㈢殑鑺傜偣鍏冪礌<member name=“Andy”>…< /member >涓? name灝辨槸鑺傜偣鍏冪礌鐨勪竴涓睘鎬?鍏跺?鏂囨湰鍊?涓篈ndy.
涓嶥ocument瀵硅薄鐩稿叧鐨凙PI
1.璇誨彇XML鏂囦歡,鑾峰緱document瀵硅薄.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
2.瑙f瀽XML褰㈠紡鐨勬枃鏈?寰楀埌document瀵硅薄.
String text = "<members></members>";
Document document = DocumentHelper.parseText(text);
3.涓誨姩鍒涘緩document瀵硅薄.
Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 鍒涘緩鏍硅妭鐐?/p>
涓嶦lement鏈夊叧鐨凙PI
1.鑾峰彇鏂囨。鐨勬牴鑺傜偣.
Element rootElm = document.getRootElement();
2.鍙栧緱鏌愯妭鐐圭殑鍗曚釜瀛愯妭鐐?
Element memberElm=root.element(“member”);// “member”鏄妭鐐瑰悕
3.鍙栧緱鑺傜偣鐨勬枃瀛?br />
String text=memberElm.getText();
涔熷彲浠ョ敤:
String text=root.elementText("name");榪欎釜鏄彇寰楁牴鑺傜偣涓嬬殑name瀛楄妭鐐圭殑鏂囧瓧.
4.鍙栧緱鏌愯妭鐐逛笅鍚嶄負"member"鐨勬墍鏈夊瓧鑺傜偣騫惰繘琛岄亶鍘?
List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
// do something
}
5.瀵規煇鑺傜偣涓嬬殑鎵鏈夊瓙鑺傜偣榪涜閬嶅巻.
for(Iterator it=root.elementIterator();it.hasNext();){
Element element = (Element) it.next();
// do something
}
6.鍦ㄦ煇鑺傜偣涓嬫坊鍔犲瓙鑺傜偣.
Element ageElm = newMemberElm.addElement("age");
7.璁劇疆鑺傜偣鏂囧瓧.
ageElm.setText("29");
8.鍒犻櫎鏌愯妭鐐?
parentElm.remove(childElm);// childElm鏄緟鍒犻櫎鐨勮妭鐐?parentElm鏄叾鐖惰妭鐐?/p>
涓嶢ttribute鐩稿叧鐨凙PI
1.鍙栧緱鏌愯妭鐐逛笅鐨勬煇灞炴?br />
Element root=document.getRootElement();
Attribute attribute=root.attribute("size");// 灞炴у悕name
2.鍙栧緱灞炴х殑鏂囧瓧
String text=attribute.getText();
涔熷彲浠ョ敤:
String text2=root.element("name").attributeValue("firstname");榪欎釜鏄彇寰楁牴鑺傜偣涓媙ame瀛楄妭鐐圭殑灞炴irstname鐨勫?
3.閬嶅巻鏌愯妭鐐圭殑鎵鏈夊睘鎬?br />
Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}
4.璁劇疆鏌愯妭鐐圭殑灞炴у拰鏂囧瓧.
newMemberElm.addAttribute("name", "sitinspring");
5.璁劇疆灞炴х殑鏂囧瓧
Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");
6.鍒犻櫎鏌愬睘鎬?br />
Attribute attribute=root.attribute("size");// 灞炴у悕name
root.remove(attribute);
灝哾ocument鐨勫唴瀹瑰啓鍏ML鏂囦歡
1.鏂囨。涓叏涓鴻嫳鏂?涓嶈緗紪鐮?鐩存帴鍐欏叆鐨勫艦寮?
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(document);
writer.close();
2.鏂囨。涓惈鏈変腑鏂?璁劇疆緙栫爜鏍煎紡鍐欏叆鐨勫艦寮?
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); // 鎸囧畾XML緙栫爜
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();
瀛楃涓蹭笌XML鐨勮漿鎹?/strong>
1.灝嗗瓧絎︿覆杞寲涓篨ML
String text = "<members> <member>sitinspring</member> </members>";
Document document = DocumentHelper.parseText(text);
2.灝嗘枃妗f垨鑺傜偣鐨刋ML杞寲涓哄瓧絎︿覆.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
Element root=document.getRootElement();
String docXmlText=document.asXML();
String rootXmlText=root.asXML();
Element memberElm=root.element("member");
String memberXmlText=memberElm.asXML();
浣跨敤XPath蹇熸壘鍒拌妭鐐?
璇誨彇鐨刋ML鏂囨。紺轟緥
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MemberManagement</name>
<comment></comment>
<projects>
<project>PRJ1</project>
<project>PRJ2</project>
<project>PRJ3</project>
<project>PRJ4</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
浣跨敤XPath蹇熸壘鍒拌妭鐐筽roject.
public static void main(String[] args){
SAXReader reader = new SAXReader();
try{
Document doc = reader.read(new File("sample.xml"));
List projects=doc.selectNodes("/projectDescription/projects/project");
Iterator it=projects.iterator();
while(it.hasNext()){
Element elm=(Element)it.next();
System.out.println(elm.getText());
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
瑙e紑鍚庢湁涓や釜鍖?浠呮搷浣淴ML鏂囨。鐨勮瘽鎶奷om4j-1.6.1.jar鍔犲叆宸ョ▼灝卞彲浠ヤ簡,濡傛灉闇瑕佷嬌鐢╔Path鐨勮瘽榪橀渶瑕佸姞鍏ュ寘jaxen-1.1-beta-7.jar.
浠ヤ笅鏄浉鍏蟲搷浣?
涓.Document瀵硅薄鐩稿叧
1.璇誨彇XML鏂囦歡,鑾峰緱document瀵硅薄.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
2.瑙f瀽XML褰㈠紡鐨勬枃鏈?寰楀埌document瀵硅薄.
String text = "<members></members>";
Document document = DocumentHelper.parseText(text);
3.涓誨姩鍒涘緩document瀵硅薄.
Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 鍒涘緩鏍硅妭鐐?br />
浜?鑺傜偣鐩稿叧
1.鑾峰彇鏂囨。鐨勬牴鑺傜偣.
Element rootElm = document.getRootElement();
2.鍙栧緱鏌愯妭鐐圭殑鍗曚釜瀛愯妭鐐?
Element memberElm=root.element("member");// "member"鏄妭鐐瑰悕
3.鍙栧緱鑺傜偣鐨勬枃瀛?br />
String text=memberElm.getText();
涔熷彲浠ョ敤:
String text=root.elementText("name");榪欎釜鏄彇寰楁牴鑺傜偣涓嬬殑name瀛楄妭鐐圭殑鏂囧瓧.
4.鍙栧緱鏌愯妭鐐逛笅鍚嶄負"member"鐨勬墍鏈夊瓧鑺傜偣騫惰繘琛岄亶鍘?
List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
// do something
}
5.瀵規煇鑺傜偣涓嬬殑鎵鏈夊瓙鑺傜偣榪涜閬嶅巻.
for(Iterator it=root.elementIterator();it.hasNext();){
Element element = (Element) it.next();
// do something
}
6.鍦ㄦ煇鑺傜偣涓嬫坊鍔犲瓙鑺傜偣.
Element ageElm = newMemberElm.addElement("age");
7.璁劇疆鑺傜偣鏂囧瓧.
ageElm.setText("29");
8.鍒犻櫎鏌愯妭鐐?
parentElm.remove(childElm);// childElm鏄緟鍒犻櫎鐨勮妭鐐?parentElm鏄叾鐖惰妭鐐?br />
涓?灞炴х浉鍏?
1.鍙栧緱鏌愯妭鐐逛笅鐨勬煇灞炴?br />
Element root=document.getRootElement();
Attribute attribute=root.attribute("size");// 灞炴у悕name
2.鍙栧緱灞炴х殑鏂囧瓧
String text=attribute.getText();
涔熷彲浠ョ敤:
String text2=root.element("name").attributeValue("firstname");榪欎釜鏄彇寰楁牴鑺傜偣涓媙ame瀛楄妭鐐圭殑灞炴irstname鐨勫?
3.閬嶅巻鏌愯妭鐐圭殑鎵鏈夊睘鎬?br />
Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}
4.璁劇疆鏌愯妭鐐圭殑灞炴у拰鏂囧瓧.
newMemberElm.addAttribute("name", "sitinspring");
5.璁劇疆灞炴х殑鏂囧瓧
Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");
6.鍒犻櫎鏌愬睘鎬?br />
Attribute attribute=root.attribute("size");// 灞炴у悕name
root.remove(attribute);
鍥?灝嗘枃妗e啓鍏ML鏂囦歡.
1.鏂囨。涓叏涓鴻嫳鏂?涓嶈緗紪鐮?鐩存帴鍐欏叆鐨勫艦寮?
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(document);
writer.close();
2.鏂囨。涓惈鏈変腑鏂?璁劇疆緙栫爜鏍煎紡鍐欏叆鐨勫艦寮?
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); // 鎸囧畾XML緙栫爜
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();
浜?瀛楃涓蹭笌XML鐨勮漿鎹?br />
1.灝嗗瓧絎︿覆杞寲涓篨ML
String text = "<members> <member>sitinspring</member> </members>";
Document document = DocumentHelper.parseText(text);
2.灝嗘枃妗f垨鑺傜偣鐨刋ML杞寲涓哄瓧絎︿覆.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
Element root=document.getRootElement();
String docXmlText=document.asXML();
String rootXmlText=root.asXML();
Element memberElm=root.element("member");
String memberXmlText=memberElm.asXML();
鍏?浣跨敤XPath蹇熸壘鍒拌妭鐐?
璇誨彇鐨刋ML鏂囨。紺轟緥
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MemberManagement</name>
<comment></comment>
<projects>
<project>PRJ1</project>
<project>PRJ2</project>
<project>PRJ3</project>
<project>PRJ4</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
浣跨敤XPath蹇熸壘鍒拌妭鐐筽roject.
public static void main(String[] args){
SAXReader reader = new SAXReader();
try{
Document doc = reader.read(new File("sample.xml"));
List projects=doc.selectNodes("/projectDescription/projects/project");
Iterator it=projects.iterator();
while(it.hasNext()){
Element elm=(Element)it.next();
System.out.println(elm.getText());
}
}
catch(Exception ex){
ex.printStackTrace();
}
}