XML是一種可擴展置標語言,又稱可擴展的編輯語言。XML文檔的定義格式有兩種:DTD和Schema格式,由於Schema是xml本身的,所以應用的非常普遍。xml的作用是文件的讀寫,所以在web開發中也得到了廣泛應用,作爲一種配置文件,充分發揮了它讀寫的功能。XML的解析方式有四種:DOM,SAX,JDOM,DOM4J。DOM是一種標準模型,也是W3C所推薦的。幾種解析方式各有優缺點,但是DOM4J幾種了前幾種的有點,在web開發中得到廣泛應用,本人也推薦掌握DOM4J。四種解析方式至少掌握一種即可,如果自己有時間精力最好全部掌握。下面是以DOM4J進行文件的讀寫實例:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
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;
public class Dom4j {
public static void main(String[] args) {
File file=new File("src/XML/gg.txt");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
write(file);
read(file);
}
//XML的寫入
private static void write(File file) {
// 創建document文檔
Document doc=DocumentHelper.createDocument();//得到document文件
//添加元素
Element e=doc.addElement("root");//添加根元素
Element student=e.addElement("student");//添加子元素
Element name=student.addElement("name");
Element age=student.addElement("age");
Element num=student.addElement("num");
Element hight=student.addElement("hight");
//給元素賦值
student.addAttribute("id", "001");
student.addAttribute("class", "201班");
name.addText("lisi");
age.addText("12");
//把document保存到文件中
//無格式化輸出
/* try {
FileWriter fw=new FileWriter(file);
doc.write(fw);
fw.flush();
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
*/
//格式化輸出
try {
FileWriter fw=new FileWriter(file);
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
format.setIndent(" ");
XMLWriter xw=new XMLWriter(fw,format);
xw.write(doc);
fw.flush();
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
//XML的解析
private static void read(File file) {
SAXReader reader=new SAXReader();
try {
Document doc=reader.read(file);
Element root=doc.getRootElement();
List list=root.elements("student");
for(int i=0;i<list.size();i++){
Element e=(Element)list.get(i);
System.out.println(e.attributeValue("id")+" "+
e.attributeValue("class")+" "+
e.elementText("name")+" "+
e.elementText("age")+" "+
e.elementText("num")+" "+
e.elementText("hight"));
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}