下面為DOM4J解析的方式。DOM4J有教程寫的很好可以直接看快速開始。
另外DOM4J通常只需要1個.jar但是仍然有很多支持.jar包,在使用DOM4J的時候如果提示找不到.jar類可以嘗試添加支持.jar包
package sax;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
public class Demo1 {
@Test
public void read() throws DocumentException{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
//讀取xml文檔第2本書的書名;
Element root = document.getRootElement();
Element book = (Element) root.elements("書").get(0);
String value = book.element("書名").getText();
System.out.println(value);
}
@Test
public void readatt() throws DocumentException{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
//讀取xml文檔第2本書的書名;
Element root = document.getRootElement();
Element book = (Element) root.elements("書").get(0);
String value = book.element("書名").attribute("name").getValue();
System.out.println(value);
}
@Test
public void add() throws DocumentException, IOException{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element book = document.getRootElement().element("書");
book.addElement("售價").setText("209元");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");//如果要改變編碼方式需要1個格式化輸出器,否則讀入的方式仍然是之前的編碼方式,使用字節流,而不能使用字符流,由于字符流會自己查碼表,而字節流通過格式化輸出器查碼表。
//XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF⑻"));
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"gb2312"),format);
writer.write(document);
writer.close();
}
@Test
public void add2() throws DocumentException, IOException{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element book = document.getRootElement().element("書");
List list = book.elements();
Element price = DocumentHelper.createElement("售價");
price.setText("30元");
list.add(2,price);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");//如果要改變編碼方式需要1個格式化輸出器,否則讀入的方式仍然是之前的編碼方式,使用字節流,而不能使用字符流,由于字符流會自己查碼表,而字節流通過格式化輸出器查碼表。
//XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF⑻"));
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"gb2312"),format);
writer.write(document);
writer.close();
}
@Test
public void delete() throws DocumentException, IOException{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element price = document.getRootElement().element("書").element("售價");
price.getParent().remove(price);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");//如果要改變編碼方式需要1個格式化輸出器,否則讀入的方式仍然是之前的編碼方式,使用字節流,而不能使用字符流,由于字符流會自己查碼表,而字節流通過格式化輸出器查碼表。
//XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF⑻"));
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"gb2312"),format);
writer.write(document);
writer.close();
}
@Test
public void update() throws DocumentException, IOException{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element book = (Element) document.getRootElement().elements("書").get(1);
book.element("作者").setText("活拂曉");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");//如果要改變編碼方式需要1個格式化輸出器,否則讀入的方式仍然是之前的編碼方式,使用字節流,而不能使用字符流,由于字符流會自己查碼表,而字節流通過格式化輸出器查碼表。
//XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF⑻"));
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"gb2312"),format);
writer.write(document);
writer.close();
}
}
<?xml version="1.0" encoding="gb2312"?>
<書架>
<書>
<書名 name="xxxxx">java教程</書名>
<作者>張孝祥</作者>
<售價>39.00元</售價>
</書>
<書>
<書名>javaScript教程</書名>
<作者>活拂曉</作者>
<售價>28元</售價>
</書>
</書架>