Java DOM4J解析XML文件
2016-09-11 15:37
288 查看
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
一.Dom4j读写XML文档主要依赖于org.dom4j.io包,其中提供DOMReader和SAXReader两类不同方式,
1)Document:定义XML文档
read(name) 文档对象
2)Element:定义XML元素
getRootElement() 获得根节点students
addElement() 添加元素 name
addAttribute() 添加属性 id
addText() 添加文本值 21
elements() 获得多个节点List
3)Text:定义XML文本节点
getText() 获得值
setText() 设置值
elementText() 获得元素值
4)Attribute:定义了XML 的属性
attributeValue 属性值
二.写入XML文件: XMLWriter类
三 .具体操作(CRUD)的步骤
1)xml文件(同上stu.xml),实体类省略,
2)业务类
package com.hlx.dom4j.gbk;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
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 StudentBiz {
/**
* 1.获得文档对象
*
* @param name
* xml文件
* @return
*/
public Document getDocument(String name) {
// 1.读取对象
SAXReader reader = new SAXReader();
// 2.获得文档对象
try {
Document document = reader.read(new File(name));
return document;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 2.解析文档 XML
*
* @param name
*/
public void parseXMl(String name) {
// 1.获得文档对象
Document document = getDocument(name);
// 2.获得根节点
Element root = document.getRootElement();
List<Element> list = root.elements();
// dom =7 dom4j=3
System.out.println(list.size());
System.out.println("学号\t\t姓名\t年龄");
// 循环数据
for (Element element : list) {
// 存放字符串数据
StringBuffer buffer = new StringBuffer();
// 追加数据
buffer.append(element.attributeValue("id") + "\t");
buffer.append(element.elementText("name") + "\t");
buffer.append(element.elementText("age"));
System.out.println(buffer.toString());
}
}
/**
*
* @param name
* @param stu
*/
public void add(String name, Student stu) {
// 1.获得文档对象
Document document = getDocument(name);
// 2.获得根节点
Element root = document.getRootElement();
// 3.添加孩子 root==> student,id
Element studentElement = root.addElement("student").addAttribute("id",
stu.getId());
//student==> name
studentElement.addElement("name").addText(stu.getName());
//student==> age
studentElement.addElement("age").addText(stu.getAge() + "");
// 4.写入xml文件
saveToXml(name, document);
System.out.println("添加成功!");
}
/**
* 写入XML文件中 格式化XML文档,并解决中文问题
*
* @param name
* @param document
*/
public void saveToXml(String name, Document document) {
try {
/** 格式化输出,类型IE浏览一样 */
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML编码 */
// format.setEncoding("gbk");
// 写入对象
XMLWriter writer = new XMLWriter(new FileOutputStream(
new File(name)), format);
// 写入
writer.write(document);
// 关闭写入对象
writer.close();
} catch (UnsupportedEncodingException | FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 删除XML文件中的某一个数据
*
* @param string
* @param student
*/
public void del(String name, Student student) {
// 1.获得文档对象
Document document = getDocument(name);
// 2.获得根节点
Element root = document.getRootElement();
// 3.根节点的孩子student
List<Element> list = root.elements();
for (Element element : list) {
// 判断
if (element.attributeValue("id").equals(student.getId())) {
// 删除
root.remove(element);
//
break;
}
}
// 4.写入xml文件
saveToXml(name, document);
System.out.println("删除成功!");
}
/**
* 修改数据
*
* @param string
* @param stu1
*/
public void update(String name, Student student) {
// 1.获得文档对象
Document document = getDocument(name);
// 2.获得根节点
Element root = document.getRootElement();
// 3.根节点的孩子student
List<Element> list = root.elements();
for (Element element : list) {
// 判断
if (element.attributeValue("id").equals(student.getId())) {
// 修改
element.element("name").setText(student.getName());
element.element("age").setText(student.getAge()+"");
//
break;
}
}
// 4.写入xml文件
saveToXml(name, document);
System.out.println("修改成功!");
}
}
3)测试类省略
一.Dom4j读写XML文档主要依赖于org.dom4j.io包,其中提供DOMReader和SAXReader两类不同方式,
1)Document:定义XML文档
read(name) 文档对象
2)Element:定义XML元素
getRootElement() 获得根节点students
addElement() 添加元素 name
addAttribute() 添加属性 id
addText() 添加文本值 21
elements() 获得多个节点List
3)Text:定义XML文本节点
getText() 获得值
setText() 设置值
elementText() 获得元素值
4)Attribute:定义了XML 的属性
attributeValue 属性值
二.写入XML文件: XMLWriter类
三 .具体操作(CRUD)的步骤
1)xml文件(同上stu.xml),实体类省略,
2)业务类
package com.hlx.dom4j.gbk;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
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 StudentBiz {
/**
* 1.获得文档对象
*
* @param name
* xml文件
* @return
*/
public Document getDocument(String name) {
// 1.读取对象
SAXReader reader = new SAXReader();
// 2.获得文档对象
try {
Document document = reader.read(new File(name));
return document;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 2.解析文档 XML
*
* @param name
*/
public void parseXMl(String name) {
// 1.获得文档对象
Document document = getDocument(name);
// 2.获得根节点
Element root = document.getRootElement();
List<Element> list = root.elements();
// dom =7 dom4j=3
System.out.println(list.size());
System.out.println("学号\t\t姓名\t年龄");
// 循环数据
for (Element element : list) {
// 存放字符串数据
StringBuffer buffer = new StringBuffer();
// 追加数据
buffer.append(element.attributeValue("id") + "\t");
buffer.append(element.elementText("name") + "\t");
buffer.append(element.elementText("age"));
System.out.println(buffer.toString());
}
}
/**
*
* @param name
* @param stu
*/
public void add(String name, Student stu) {
// 1.获得文档对象
Document document = getDocument(name);
// 2.获得根节点
Element root = document.getRootElement();
// 3.添加孩子 root==> student,id
Element studentElement = root.addElement("student").addAttribute("id",
stu.getId());
//student==> name
studentElement.addElement("name").addText(stu.getName());
//student==> age
studentElement.addElement("age").addText(stu.getAge() + "");
// 4.写入xml文件
saveToXml(name, document);
System.out.println("添加成功!");
}
/**
* 写入XML文件中 格式化XML文档,并解决中文问题
*
* @param name
* @param document
*/
public void saveToXml(String name, Document document) {
try {
/** 格式化输出,类型IE浏览一样 */
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML编码 */
// format.setEncoding("gbk");
// 写入对象
XMLWriter writer = new XMLWriter(new FileOutputStream(
new File(name)), format);
// 写入
writer.write(document);
// 关闭写入对象
writer.close();
} catch (UnsupportedEncodingException | FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 删除XML文件中的某一个数据
*
* @param string
* @param student
*/
public void del(String name, Student student) {
// 1.获得文档对象
Document document = getDocument(name);
// 2.获得根节点
Element root = document.getRootElement();
// 3.根节点的孩子student
List<Element> list = root.elements();
for (Element element : list) {
// 判断
if (element.attributeValue("id").equals(student.getId())) {
// 删除
root.remove(element);
//
break;
}
}
// 4.写入xml文件
saveToXml(name, document);
System.out.println("删除成功!");
}
/**
* 修改数据
*
* @param string
* @param stu1
*/
public void update(String name, Student student) {
// 1.获得文档对象
Document document = getDocument(name);
// 2.获得根节点
Element root = document.getRootElement();
// 3.根节点的孩子student
List<Element> list = root.elements();
for (Element element : list) {
// 判断
if (element.attributeValue("id").equals(student.getId())) {
// 修改
element.element("name").setText(student.getName());
element.element("age").setText(student.getAge()+"");
//
break;
}
}
// 4.写入xml文件
saveToXml(name, document);
System.out.println("修改成功!");
}
}
3)测试类省略
相关文章推荐
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- 采用dom4j解析XML文件实现Java与oracle连接
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
- 在java项目中如何利用Dom4j解析XML文件获取数据
- 学习笔记-Java中的xml文件读取之DOM4J解析
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- Dom4j解析XML文件,用于SQL与Java代码分离实现低耦合
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
- java dom4j 解析XML文件 简易教程
- 使用dom4j把XML文件解析成JavaBean
- Java之xml文件解析四(DOM4J方式解析xml文件)
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- java解析xml文件的开源工具 — dom4j
- Java生成和解析XML格式文件和字符串的实例代码【dom4j中的SAXReader对象读取并解析xml文件】
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
- java dom4j解析xml文件
- Java基础系列17:使用DOM、SAX、JDOM、DOM4J解析XML文件详解
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库