您的位置:首页 > 其它

xml解析-dom4j方式

2016-05-07 16:44 363 查看

一、dom4j简介

DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。

DOM4J下载jar包:http://downloads.sourceforge.net/dom4j/dom4j-1.6.1.jar

二、操作步骤

1.创建带解析xml文件

<?xml version="1.0" encoding="UTF-8"?>
<person>
<p1 id="111">
<name>zhangsan</name>
<age>40</age>
</p1>
<p1>
<name>lisi</name>
<age>21</age>
</p1>
<p1>
<name>wangwu</name>
<age>20</age>
</p1>
</person>


2.创建封装类

为了便于操作,我把用到的代码封装成两个方法放在一个类里面:

import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jUtils {
public static Document getDocument() throws Exception{
SAXReader saxReader = new SAXReader();
//得到document
Document doc = saxReader.read("src/dom4j/person.xml");
return doc;
}

public static void xmlWriteBack(String url,Document doc) throws Exception{
OutputFormat format = OutputFormat.createPrettyPrint();//格式化xml文本
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(url),format);
xmlWriter.write(doc);
xmlWriter.close();
}
}


解释:getDocument()方法的功能是获取整个xml文件,xmlWriteBack方法的功能是回写xml文件,完成增删改操作。

3.完成具体操作的方法

1.查看元素属性

这里示例的是查看第一个p1元素的id属性的值

public static void getAttributeValue() throws Exception{
/*
* 1、创建解析器
* 2、得到document
* 3、得到根节点
* 4、得到第一个p1
* 5、得到p1里的属性值
*/
//创建解析器
Document doc = Dom4jUtils.getDocument();
Element root = doc.getRootElement();
//得到第一个p1
Element p1 = root.element("p1");
String attValue = p1.attributeValue("id");
System.out.println("id="+attValue);
}


2.删除元素

这里示例的是删除第一个p1元素里的name元素

public static void deleteSchool() throws Exception{
/*
* 1、创建解析器
* 2、得到document
* 3、得到根节点
* 4、得到第一个p1
* 5、获取p1下school
* 6、删除school
* 7、回写xml
*/
//创建解析器
Document doc = Dom4jUtils.getDocument();
Element root = doc.getRootElement();
//得到第一个p1
Element p1 = root.element("p1");
Element name = p1.element("name");
p1.remove(name);
//回写操作
Dom4jUtils.xmlWriteBack("src/dom4j/person.xml", doc);
}


3.修改元素的值

这里示例的是修改第一个p1元素里age元素的值
public static void alterAge() throws Exception{
/*
* 1、创建解析器
* 2、得到document
* 3、得到根节点
* 4、得到第一个p1
* 5、获取p1下age
* 6、修改值
* 7、回写xml
*/
//创建解析器
Document doc = Dom4jUtils.getDocument();
Element root = doc.getRootElement();
//得到第一个p1
Element p1 = root.element("p1");
Element age = p1.element("age");
age.setText("40");
//回写操作
Dom4jUtils.xmlWriteBack("src/dom4j/person.xml", doc);
}


4.添加元素

这里示例的是在第一个p1下添加一个sex元素

public static void addsex() throws Exception{
/*
* 1、创建解析器
* 2、得到document
* 3、得到根节点
* 4、得到第一个p1
* 5、在p1下面添加元素
* 6、在新元素下面添加文本
* 7、回写xml
*/
//创建解析器
Document doc = Dom4jUtils.getDocument();
Element root = doc.getRootElement();
//得到第一个p1
Element p1 = root.element("p1");
//在p1下面添加元素
Element sex = p1.addElement("sex");
//在元素里添加文本
sex.setText("nv");
//回写
Dom4jUtils.xmlWriteBack("src/dom4j/person.xml", doc);
}


5.查看元素

这里示例的是查看xml文件中所有的name元素的值

public static void selectName() throws Exception {
/*
* 1、创建解析器
* 2、得到document
* 3、得到根节点
* 4、得到p1
* 5、得到p1下的name
* 6、得到name里的值
*/
//创建解析器
Document doc = Dom4jUtils.getDocument();
Element root = doc.getRootElement();
//得到p1
List<Element> list = root.elements("p1");
for (Element e:list) {
Element name = e.element("name");
String s= name.getText();
System.out.println(s);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: