1. 程式人生 > >DOM4j解析、修改、刪除、增加、保存XML的方法

DOM4j解析、修改、刪除、增加、保存XML的方法

exceptio set null 增加 gb2 itl str owin chang

//XML文件

<?xml version="1.0" encoding="gb2312"?>

<PhoneInfo>
<Brand name="華為" ID="1">
<Type name="P9">
<title>標題信息</title>
</Type>
</Brand>
<Brand name="蘋果" ID="2">
<Type name="inphone6"/>
<Type name="inphone7">
<title>標題信息</title>
</Type>
</Brand>
</PhoneInfo>

public class DOM4jParse {
Document doc=null;
//創建Document對象的方法
public void creatInfo() throws DocumentException{
SAXReader reader=new SAXReader();
doc = reader.read(new File("src/Phone.xml"));


}

//遍歷XML文件信息的 方法
public void showInfo(){
//獲得根元素
Element rootElement = doc.getRootElement();
Iterator iterator = rootElement.elementIterator();
while (iterator.hasNext()) {
Element brandElement=(Element)iterator.next();
//取得brand 屬性name的值
String value = brandElement.attributeValue("name");
Iterator elementType = brandElement.elementIterator();
while (elementType.hasNext()) {
Element typeElement=(Element)elementType.next();
//取得Type屬性 name的值
String typeName = typeElement.attributeValue("name");
//取得typeElement子節點的文字
String title = typeElement.elementText("title");

System.out.println(value+typeName+title);
}


}
}
//保存文件的方法


public void saveInfo(String path) throws IOException{
OutputFormat fomat=OutputFormat.createPrettyPrint();
fomat.setEncoding("gb2312");
XMLWriter writer=new XMLWriter(new FileWriter(path),fomat);
writer.write(doc);
writer.close();

}
//增加節點信息 (三星 Note4"標題信息")

public void addInfo() throws IOException{
//找到根節點
Element rootElement = doc.getRootElement();
//創建一個Brand節點
Element brandElement = rootElement.addElement("Brand");
brandElement.addAttribute("name", "三星");
Element type = brandElement.addElement("Type");
type.addAttribute("name", "Note4");

Element title =type.addElement("title");
title.setText("標題信息");
this.saveInfo("src/Phone.xml");

}
//修改XML信息

public void changeInfo() throws IOException{
Element rootElement = doc.getRootElement();
int id=0;
Iterator brandElement = rootElement.elementIterator();
while (brandElement.hasNext()) {
id++;
Element brand=(Element)brandElement.next();
brand.addAttribute("ID", id+"");
}
this.saveInfo("src/Phone.xml");
}
//刪除XML信息的方法
public void deleInfo() throws IOException{

Element rootElement = doc.getRootElement();
Iterator elementIterator = rootElement.elementIterator();
while (elementIterator.hasNext()) {
Element brand=(Element)elementIterator.next();
String value = brand.attributeValue("name");
if (value.equals("三星")) {
brand.getParent().remove(brand);
}

}
this.saveInfo("src/Phone.xml");


}

/**
* DOM4j(解析,添加,刪除,修改,保存文件)XML方法
* @param args
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args) throws DocumentException, IOException {
DOM4jParse d=new DOM4jParse();
d.creatInfo();
//d.addInfo();
//d.changeInfo();
d.deleInfo();
d.showInfo();
}

}

DOM4j解析、修改、刪除、增加、保存XML的方法