<books>
<!--This is a test for dom4j, holen, 2004.9.11-->
<book show="no">
<title>Dom4j Tutorials</title>
</book>
<book show="no">
<title>Lucene Studing</title>
</book>
<book show="no">
<title>Lucene in Action</title>
</book>
<owner>O'Reilly</owner>
</books>
--------------------------------
package com.holen.dom4j;
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
* @author Holen Chen
*/
public class Dom4jDemo {
public Dom4jDemo() {
}
/**
* 寤虹珛涓涓猉ML鏂囨。,鏂囨。鍚嶇敱杈撳叆鍙傛暟鍐沖畾
* @param filename 闇寤虹珛鐨勬枃浠跺悕
* @return 榪斿洖鎿嶄綔緇撴灉, 0琛ㄥけ璐? 1琛ㄦ垚鍔?br>
*/
public int createXMLFile(String filename){
/** 榪斿洖鎿嶄綔緇撴灉, 0琛ㄥけ璐? 1琛ㄦ垚鍔?nbsp;*/
int returnValue = 0;
/** 寤虹珛document瀵硅薄 */
Document document = DocumentHelper.createDocument();
/** 寤虹珛XML鏂囨。鐨勬牴books */
Element booksElement = document.addElement("books");
/** 鍔犲叆涓琛屾敞閲?nbsp;*/
booksElement.addComment("This is a test for dom4j, holen, 2004.9.11");
/** 鍔犲叆絎竴涓猙ook鑺傜偣 */
Element bookElement = booksElement.addElement("book");
/** 鍔犲叆show鍙傛暟鍐呭 */
bookElement.addAttribute("show","yes");
/** 鍔犲叆title鑺傜偣 */
Element titleElement = bookElement.addElement("title");
/** 涓簍itle璁劇疆鍐呭 */
titleElement.setText("Dom4j Tutorials");
/** 綾諱技鐨勫畬鎴愬悗涓や釜book */
bookElement = booksElement.addElement("book");
bookElement.addAttribute("show","yes");
titleElement = bookElement.addElement("title");
titleElement.setText("Lucene Studing");
bookElement = booksElement.addElement("book");
bookElement.addAttribute("show","no");
titleElement = bookElement.addElement("title");
titleElement.setText("Lucene in Action");
/** 鍔犲叆owner鑺傜偣 */
Element ownerElement = booksElement.addElement("owner");
ownerElement.setText("O'Reilly");
try{
/** 灝哾ocument涓殑鍐呭鍐欏叆鏂囦歡涓?nbsp;*/
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));
writer.write(document);
writer.close();
/** 鎵ц鎴愬姛,闇榪斿洖1 */
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
/**
* 淇敼XML鏂囦歡涓唴瀹?騫跺彟瀛樹負涓涓柊鏂囦歡
* 閲嶇偣鎺屾彙dom4j涓浣曟坊鍔犺妭鐐?淇敼鑺傜偣,鍒犻櫎鑺傜偣
* @param filename 淇敼瀵硅薄鏂囦歡
* @param newfilename 淇敼鍚庡彟瀛樹負璇ユ枃浠?br>
* @return 榪斿洖鎿嶄綔緇撴灉, 0琛ㄥけ璐? 1琛ㄦ垚鍔?br>
*/
public int ModiXMLFile(String filename,String newfilename){
int returnValue = 0;
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
/** 淇敼鍐呭涔嬩竴: 濡傛灉book鑺傜偣涓璼how鍙傛暟鐨勫唴瀹逛負yes,鍒欎慨鏀規垚no */
/** 鍏堢敤xpath鏌ユ壘瀵硅薄 */
List list = document.selectNodes("/books/book/@show" );
Iterator iter = list.iterator();
while(iter.hasNext()){
Attribute attribute = (Attribute)iter.next();
if(attribute.getValue().equals("yes")){
attribute.setValue("no");
}
}
/**
* 淇敼鍐呭涔嬩簩: 鎶妎wner欏瑰唴瀹規敼涓篢shinghua
* 騫跺湪owner鑺傜偣涓姞鍏ate鑺傜偣,date鑺傜偣鐨勫唴瀹逛負2004-09-11,榪樹負date鑺傜偣娣誨姞涓涓弬鏁皌ype
*/
list = document.selectNodes("/books/owner" );
iter = list.iterator();
if(iter.hasNext()){
Element ownerElement = (Element)iter.next();
ownerElement.setText("Tshinghua");
Element dateElement = ownerElement.addElement("date");
dateElement.setText("2004-09-11");
dateElement.addAttribute("type","Gregorian calendar");
}
/** 淇敼鍐呭涔嬩笁: 鑻itle鍐呭涓篋om4j Tutorials,鍒欏垹闄よ鑺傜偣 */
list = document.selectNodes("/books/book");
iter = list.iterator();
while(iter.hasNext()){
Element bookElement = (Element)iter.next();
Iterator iterator = bookElement.elementIterator("title");
while(iterator.hasNext()){
Element titleElement=(Element)iterator.next();
if(titleElement.getText().equals("Dom4j Tutorials")){
bookElement.remove(titleElement);
}
}
}
try{
/** 灝哾ocument涓殑鍐呭鍐欏叆鏂囦歡涓?nbsp;*/
XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)));
writer.write(document);
writer.close();
/** 鎵ц鎴愬姛,闇榪斿洖1 */
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
/**
* 鏍煎紡鍖朮ML鏂囨。,騫惰В鍐充腑鏂囬棶棰?br>
* @param filename
* @return
*/
public int formatXMLFile(String filename){
int returnValue = 0;
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
XMLWriter output = null;
/** 鏍煎紡鍖栬緭鍑?綾誨瀷IE嫻忚涓鏍?nbsp;*/
OutputFormat format = OutputFormat.createPrettyPrint();
/** 鎸囧畾XML瀛楃闆嗙紪鐮?nbsp;*/
format.setEncoding("GBK");
output = new XMLWriter(new FileWriter(new File(filename)),format);
output.write(document);
output.close();
/** 鎵ц鎴愬姛,闇榪斿洖1 */
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
public static void main(String[] args) {
Dom4jDemo temp = new Dom4jDemo();
System.out.println(temp.createXMLFile("d://holen.xml"));
System.out.println(temp.ModiXMLFile("d://holen.xml","d://holen2.xml"));
System.out.println(temp.formatXMLFile("d://holen2.xml"));
}
}
杞嚜錛歨ttp://www.donews.net/holen/archive/2004/09/11/96062.aspx

]]>