Posted on 2009-07-04 16:55
胡娟 閱讀(666)
評(píng)論(0) 編輯 收藏 所屬分類:
JAVA
所需要的jar包
所要解析和創(chuàng)建的xml文檔樣式
<?xml version="1.0" encoding="gb2312"?>
<students>
<student id="1">
<name>hujuan</name>
<age>24</age>
</student>
<student id="2">
<name>fankai</name>
<age>24</age>
</student>
</students>
創(chuàng)建xml過程
package com.hujuan.xml;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class CreateXml {
public void createXml(){
//使用DocumentHelper類創(chuàng)建一個(gè)文檔實(shí)例。DocumentHelper是生成xml文檔節(jié)點(diǎn)的dom4j API工廠類
Document document = DocumentHelper.createDocument();
//使用addElement()方法創(chuàng)建根元素students,addElement()用于向xml文檔中增加元素
Element students = document.addElement("students");
//添加注釋
students.addComment("students 節(jié)點(diǎn)");
//在students節(jié)點(diǎn)下添加子節(jié)點(diǎn)student
Element student = students.addElement("student");
//給student元素添加屬性
student.addAttribute("id", "1");
Element name = student.addElement("name");
Element age = student.addElement("age");
//給元素設(shè)置元素的文本
name.setText("hujuan");
age.setText("24");
Element student2 = students.addElement("student");
//給student元素添加屬性
student2.addAttribute("id", "2");
Element name2 = student2.addElement("name");
Element age2 = student2.addElement("age");
//給元素設(shè)置元素的文本
name2.setText("fankai");
age2.setText("24");
try {
OutputFormat format = new OutputFormat(" ",true);
format.setEncoding("GB2312");
//輸出創(chuàng)建的xml文檔
XMLWriter output = new XMLWriter(format);
FileWriter fw = new FileWriter(new File("src/bb.xml"));
output.write(document);
output.close();
} catch (IOException e) {
e.printStackTrace();
}
//在元素中使用addProcessingInstruction()方法增加一個(gè)處理指令
//students.addProcessingInstruction(arg0, arg1)
}
}
解析xml過程
package com.hujuan.xml;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class ReadXml {
public void readXml(){
//使用SAXReader解析XMl
SAXReader saxReader = new SAXReader();
File file = new File("src/student.xml");
try {
Document document = saxReader.read(file);
Element students = document.getRootElement();
List list = students.elements("student");
for(Iterator it = list.iterator();it.hasNext();){
Element student = (Element)it.next();
//獲得得元素的屬性值
String id = student.attributeValue("id");
System.out.println(id);
//獲得子元素的屬性
String name = student.elementText("name");
System.out.println(name);
String age = student.elementText("age");
System.out.println(age);
//student.removeChild(name);
}
try {
OutputFormat format = new OutputFormat(" ",true);
format.setEncoding("GB2312");
//輸出創(chuàng)建的xml文檔
XMLWriter output = new XMLWriter(format);
FileWriter fw = new FileWriter(new File("src/bb.xml"));
output.write(document);
output.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
測(cè)試用例
package junit.test;
import org.junit.Test;
import com.hujuan.xml.CreateXml;
import com.hujuan.xml.ReadXml;
public class XmlTest {
@Test
public void createXml(){
CreateXml createXml = new CreateXml();
createXml.createXml();
}
@Test
public void readXml(){
ReadXml readXml = new ReadXml();
readXml.readXml();
}
}
補(bǔ)充
添加文檔類型說明
document.addDocType("bb",null,"file://Dtds/src/bb.dtd");
輸出
<!DOCTYPE bb SYSTEM "file://Dtds/src/bb.dtd"
修改name節(jié)點(diǎn)的值
for(Iterator ite = studentList.iterator();ite.hasNext();){
Element EName = (Element)ite.next();
EName.setText("kay");
}
修改student屬性id的值
//獲得student的屬性
Attribute att = student.attribute("id");
//修改student的屬性值
att.setValue("3");
刪除student的id屬性
//刪除student的屬性
student.remove(att);
刪除student節(jié)點(diǎn)
//刪除student節(jié)點(diǎn)
students.remove(student);