java中用dom4j对xml文件进行操作
来源:互联网 发布:网络大电影招商案 编辑:程序博客网 时间:2024/05/16 05:59
dom4j的增删改查(简单例子)
1.dom4j的jar包:
在用dom4j之前需要先导入dom4j的jar包,我用的是dom4j-1.6.1这个版本的。
2.首先利用dom4j创建一个xml文件:
package lili;import java.io.File;import java.io.FileOutputStream;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 Dome1 {public static void main(String[] args) throws Exception {String fileName = "Person.xml";createNewXml(fileName);}public static void createNewXml(String fileName) {// 创建文档对象Document document = DocumentHelper.createDocument();// 添加一个根结点<span style="white-space:pre"></span>Element root = document.addElement("root");<span style="white-space:pre"></span>//在根结点下加入新的person结点<span style="white-space:pre"></span>Element Person = root.addElement("Person");// 添加属性及属性值Person.addAttribute("id", "7");// 在根结点下加入一个name的结点Element name = Person.addElement("name");// 设置结点的内容name.setText("小明");Element sex = Person.addElement("sex");sex.setText("女");Element age = Person.addElement("age");age.setText("3");try {// 对xml的读入都需要进行该操作,将缓存的数据写入到文件中File file = new File(fileName);FileOutputStream fos = new FileOutputStream(file);// 创建美化文档的format对象,如果没有这个对象,生成的XML文档的元素不会换行,不太美观OutputFormat format = OutputFormat.createPrettyPrint();XMLWriter xmlWriter = new XMLWriter(fos, format);xmlWriter.write(document);xmlWriter.close();} catch (IOException e) {e.printStackTrace();}}}
创建的Person.xml
<?xml version="1.0" encoding="UTF-8"?><root> <Person id="7"> <name>小明</name> <sex>女</sex> <age>3</age> </Person></root>
3.增加数据:
public static void addNewElement(String fileName) throws DocumentException {// 获取解析器SAXReader reader = new SAXReader();File file = new File(fileName);// 获取文件对象Document dom = reader.read(file);// 获取根结点Element root = dom.getRootElement();// 添加新元素Element person = root.addElement("Person");// 给新元素添加属性及属性值person.addAttribute("id", "8");// 在新元素下加入一个标签(结点)Element name = person.addElement("name");name.setText("小红");Element sex = person.addElement("sex");sex.setText("男");Element age = person.addElement("age");age.setText("3");try {// 对xml的读入都需要进行该操作,将缓存的数据写入到文件中FileOutputStream fos = new FileOutputStream(file);// 创建美化文档的format对象,如果没有这个对象,生成的XML文档的元素不会换行,不太美观OutputFormat format = OutputFormat.createPrettyPrint();XMLWriter xmlWriter = new XMLWriter(fos, format);xmlWriter.write(dom);xmlWriter.close();} catch (IOException e) {e.printStackTrace();}}
添加后结果:
<?xml version="1.0" encoding="UTF-8"?><root> <Person id="7"> <name>小明</name> <sex>女</sex> <age>3</age> </Person> <Person id="8"> <name>小红</name> <sex>男</sex> <age>3</age> </Person></root>
4.删除数据:
在上图的基础上删除数据public static void deleteElement(String fileName) throws DocumentException {SAXReader reader = new SAXReader();File file = new File(fileName);// 获取文件对象Document dom = reader.read(file);// 获取根结点Element root = dom.getRootElement();// 以删除person为小红的年龄为例// 由于有多个Person结点,所以用个列表保存所有结点为Person的结点List<Element> list = root.elements("Person");// List<Element> list = root.elements(); 则是获取所有结点,不只是Person的结点Element Person = null;for (int i = 0; i < list.size(); i++) {Person = list.get(i);if (Person.attributeValue("id").equals("8")) {// 移除一个结点需要用它的父结点调用remove方法Element age = Person.element("age");Person.remove(age);}}try {// 对xml的读入都需要进行该操作,将缓存的数据写入到文件中FileOutputStream fos = new FileOutputStream(file);// 创建美化文档的format对象,如果没有这个对象,生成的XML文档的元素不会换行,不太美观OutputFormat format = OutputFormat.createPrettyPrint();XMLWriter xmlWriter = new XMLWriter(fos, format);xmlWriter.write(dom);xmlWriter.close();} catch (IOException e) {e.printStackTrace();}}
删除后结果:
<?xml version="1.0" encoding="UTF-8"?><root> <Person id="7"> <name>小明</name> <sex>女</sex> <age>3</age> </Person> <Person id="8"> <name>小红</name> <sex>男</sex> </Person> </root>
5.修改数据:
在上面的基础上修改person为小明的年龄为例:public static void ChangeElement(String fileName) throws DocumentException {SAXReader reader = new SAXReader();File file = new File(fileName);// 获取文件对象Document dom = reader.read(file);// 获取根结点Element root = dom.getRootElement();// 以修改person为小明的年龄为例// 由于有多个Person结点,所以用个列表保存所有结点为Person的结点List<Element> list = root.elements("Person");// List<Element> list = root.elements(); 则是获取所有结点,不只是Person的结点Element Person = null;for (int i = 0; i < list.size(); i++) {Person = list.get(i);if (Person.attributeValue("id").equals("7")) {Element age = Person.element("age");age.setText("4");}}try {// 对xml的读入都需要进行该操作,将缓存的数据写入到文件中FileOutputStream fos = new FileOutputStream(file);// 创建美化文档的format对象,如果没有这个对象,生成的XML文档的元素不会换行,不太美观OutputFormat format = OutputFormat.createPrettyPrint();XMLWriter xmlWriter = new XMLWriter(fos, format);xmlWriter.write(dom);xmlWriter.close();} catch (IOException e) {e.printStackTrace();}}
修改后结果:
<?xml version="1.0" encoding="UTF-8"?><root> <Person id="7"> <name>小明</name> <sex>女</sex> <age>4</age> </Person> <Person id="8"> <name>小红</name> <sex>男</sex> </Person> </root>
6.查找数据:
以上面修改后的结果为例子 查找其中name为小红的性别:public static void main(String[] args) throws Exception {String fileName = "Person.xml";createNewXml(fileName);addNewElement(fileName);deleteElement(fileName);ChangeElement(fileName);String sex = findSexByName(fileName, "小红");System.out.println("小红性别: " + sex);}public static String findSexByName(String fileName, String nameString)throws DocumentException {String sex = "未找到";SAXReader reader = new SAXReader();File file = new File(fileName);// 获取文件对象Document dom = reader.read(file);// 获取根结点Element root = dom.getRootElement();// 由于有多个Person结点,所以用个列表保存所有结点为Person的结点List<Element> list = root.elements("Person");// List<Element> list = root.elements(); 则是获取所有结点,不只是Person的结点Element Person = null;for (int i = 0; i < list.size(); i++) {Person = list.get(i);Element nameElement = Person.element("name");String nameString2 = nameElement.getText();if (nameString2.equals(nameString)) {Element sexElement = Person.element("sex");sex = sexElement.getText();break;}}return sex;}}
查找结果:
小红性别: 男
0 0
- java中用dom4j对xml文件进行操作
- java中用dom4j操作XML文件
- java中用Dom4J来操作xml文件
- dom4j对xml文件进行更新操作
- xml-使用dom4j对xml文件进行crud操作
- 使用dom4j对xml文件进行读取和输出操作
- java 使用DOM4J对XML文件进行增删改查操作
- 简单使用dom4j对xml文件进行输出操作(如何使用dom4j对xml文件进行输出)
- dom4j对xml进行读写操作
- Java操作XML文件 dom4j
- Java 利用DOM4J对XML进行查询
- java中用Dom4J来操作xml文件(删除和修改和添加)
- 【insigma】以dom4j对xml文件操作
- DOM4j对XML文件的操作
- java中用dom4j解析xml
- java中用Dom4j解析xml
- Java操作XML文件 dom4j 篇
- Java操作XML文件 dom4j 篇
- IOS 大众点评 搜索界面实现
- LeetCode----Reverse Linked List II
- 2.2栈
- Oracle EBS 用户配置文件
- python之re库
- java中用dom4j对xml文件进行操作
- 最大生成树POJ2263Heavy Cargo解题报告
- 警惕 Xcode 木马
- C#中Winform程序调用WebService服务
- iOS的KVO底层实现原理
- 聚类与分类的区别
- 理解透明物体渲染
- poj 2138 字符串dp
- Android Studio