您的位置:首页 > 其它

Dom4j操作xml文件

2015-09-25 14:02 453 查看
操作环境:Exclipse luna +dom4j-1.6.1+java

操作xml文件,很早就做过了,今天又重新写了一个小样,来整理一下。

首先,我们用java来操作xml文件,一般有两种方式。一种是DOM, 另一种是SAX. SAX 和DOM 在实现过程中,分别侧重于不同的方法满足不同的需求。

其中,Dom的优点在于可以实现随机访问,其原理在于dom会将文档的逻辑结构(包括文档的根、元素、元素内容、属性、属性值)等都以对象模型的形式保存到内存中,所以可以以任何顺序来访问xml元素。而Sax是提供了对xml文档的顺序访问模式,这种模式的好处之一是访问速度很快,它是基于事件的,不需要全部加载到内存,所以所需的系统资源较少,可以用来分析大型的xml文档,比较高效。

【我们这里演示的是第一种方式。】

按照惯例,我们首先强调几个可能会出现的问题。

1.记得导入dom4j的jar包。

2.在写xml文档的时候,可能会出现中文乱码问题,这一点的解决方式有多种,附一篇笔者看到的文档,很详细。

/article/8051944.html

3.如果解析文档的路径使用的是相对路径,建议放到与java文件同一个包下。

供解析的xml文档:



解析的效果图:



5.测试生成的xml文档的效果图,默认放在D盘根目录下



6.下面上干货

package com.sinotimes.soft.xml;

import java.security.KeyStore.Entry.Attribute;

import java.util.List;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Writer;

import javax.sql.rowset.spi.XmlWriter;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.Node;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

import org.w3c.dom.NodeList;

public class xmlTest {

//构造函数

public void xmlTest(){

}
//解析xml
public void readXml(){
SAXReader saxReader = new SAXReader();
try {
Document document =  saxReader.read(new File("NewFile.xml"));
//获取根元素
Element root = document.getRootElement();
List <Element> childNode = root.elements();
if(childNode !=null){
for(int i=0;i<childNode.size();i++){
System.out.println("----这是第"+i+"本书的信息----");
Element book = childNode.get(i);
System.out.println("类别:"+book.attributeValue("category"));
System.out.println("书籍名称:"+book.elementText("name"));
System.out.println("价格:"+book.elementText("price"));
System.out.println("出版社:"+book.elementText("publisher"));
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
//写xml
public void createXml() {

String nameStr,weighStr,tallStr;
//创建文档对象
Document document = DocumentHelper.createDocument();
Element root = document.addElement("students");
for(int i=0;i<4;i++){
if(i==0){
nameStr = "李明";
weighStr = "65kg";
tallStr = "178cm";
}else if(i==1){
nameStr = "张磊";
weighStr = "70kg";
tallStr = "183cm";
}else if(i==2){
nameStr = "刘潇潇";
weighStr = "53kg";
tallStr = "168cm";
}else{
nameStr = "赵媛媛";
weighStr = "55kg";
tallStr = "172cm";
}
Element student = root.addElement("student");
student.addAttribute("ID", "学生"+i);
student.addElement("name",nameStr);
student.addElement("weight",weighStr);
student.addElement("tall",tallStr);
}
try {
Writer fileWriter = new FileWriter("D:\\student.xml");
OutputFormat format = OutputFormat.createPrettyPrint(); //控制显示xml元素换行,为了美观作用
format.setEncoding("gb2312");
XMLWriter xmlWriter = new XMLWriter(fileWriter,format);
xmlWriter.write(document);
xmlWriter.close();
System.out.println("create end!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String args[]) throws Exception{
xmlTest mXMLTest = new xmlTest();
//解析xml
//  mXMLTest.readXml();
//生成xml
mXMLTest.createXml();
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: