Dom4j操作XML的簡單應用實例(作者…

 

 

**

* 對xml文件進行操作的類

*/

package com.mysoft.test;

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;

public class Dom4jTest {
public Dom4jTest(){
}


public int createXmlFile(String fileName){

int flag=0;


Document document = DocumentHelper.createDocument();


Element booksElement = document.addElement("books");


booksElement.addComment("This is a test for dom4j,shanren,2008.8.29");


Element bookElement = booksElement.addElement("book");


bookElement.addAttribute("show", "yes");


Element titleElement = bookElement.addElement("title");


titleElement.setText("Dom4j Tutorials");


bookElement = booksElement.addElement("book");
bookElement.addAttribute("show","no");
titleElement = bookElement.addElement("title");
titleElement.setText("Sucene studing");
bookElement = booksElement.addElement("book");
bookElement.addAttribute("show", "yes");
titleElement = bookElement.addElement("title");
titleElement.setText("Lucene in action");


Element ownerElement = booksElement.addElement("owner");
ownerElement.setText("O'Reilly");

try {

XMLWriter writer = new XMLWriter(new FileWriter(new File(fileName)));
writer.write(document);
writer.close();

flag = 1;
} catch (Exception e) {
flag = 0;
e.printStackTrace();
// TODO: handle exception
}
return flag;
}



public int modifyXMLFile(String fileName,String newFileName){
int flag=0;
try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(fileName));


List list = document.selectNodes("//books/book/@show");
Iterator it= list.iterator();
while(it.hasNext()){
Attribute attribute = (Attribute)it.next();
if(attribute.getValue().equals("yes"))
attribute.setValue("no");
}



list = null;
list = document.selectNodes("//books/owner");
it = null;
it = list.iterator();
if(it.hasNext()){
Element ownerElement =(Element)it.next();
ownerElement.setText("Tshiinghua");
Element dateElement = ownerElement.addElement("date");
dateElement.setText("2004-09-11");
dateElement.addAttribute("type", "Gregorian calendar");
}


list = null;
list = document.selectNodes("//books/book");
it = null;
it = list.iterator();
while(it.hasNext()){
Element bookElement = (Element)it.next();
Iterator<Element> it2=bookElement.elementIterator("title");
while(it2.hasNext()){
Element titleElement = it2.next();
if(titleElement.getText().equals("Dom4j Tutorials")){
bookElement.remove(titleElement);

 

 

}
}
}

XMLWriter writer = new XMLWriter(new FileWriter(new File(newFileName)));
writer.write(document);
writer.close();
flag=1;
} catch (Exception e) {
flag=0;
e.printStackTrace();
// TODO: handle exception
}
return flag;
}


public int formatXML(String fileName,String characterEncoding){
int flag=0;
try {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(fileName));
XMLWriter output = null;


OutputFormat format = OutputFormat.createPrettyPrint();


format.setEncoding(characterEncoding);

output = new XMLWriter(new FileWriter(new File(fileName)),format);
output.write(document);
output.close();
flag = 1;
} catch (Exception e) {
flag = 0;
// TODO: handle exception
}
return flag;
}
}






package com.mysoft.test;

import com.dfsoft.util.Tool;

public class MyTest {


public static void main(String[] args) {


Dom4jTest dt = new Dom4jTest();
//dt.createXmlFile("d:/dom4jtest.xml"); // 創建xml測試
//dt.modifyXMLFile("d:/dom4jtest.xml", "d:/dom4jmodifytest.xml");
dt.formatXML("d:/dom4jtest.xml", "GBK");
}
}



用到的dom4j包是dom4j-1.6.1.zip,還要用到json的異常報錯包(如果沒有這個包,當讀取XML中的元素時會出錯)json-lib-2.2.2-jdk15.jar,這兩個包請自行搜索下載或直接到官方站上下載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章