1.导入dim4j提供的jar包

  (1)dom4j,是一个组织,针对xml解析,提供解析器dom4j

  (2)dom4j不是javase的一部分(jaxp是的)

  (3)使用dom4j步骤

    - 下载并导入dom4j提供的jar包

    - 创建一个lib文件夹,并把jar包放到里面

    - 右键点击jar包, build path --> add to buildpath

    - 看到jar包变成一个奶瓶养殖,表示导入成功

  (4)下载地址  https://dom4j.github.io/  下载后缀名为 .zip的文件 它里面提供了许多帮助文档

  (5)查看快速开发

    - 解压后 dom4j-1.6.1-->docs-->打开index.html-->点击左上角的 Quick start  我们可以看到很多实例

  (6)在线api文档地址 https://www.oschina.net/uploads/doc/dom4j-1.6.1/index.html

2.解析xml

  (1)获取document(SAXReader creates a DOM4J tree from SAX parsing events.)

//获取解析器
SAXReader saxReader = new SAXReader();
//获取文档
Document document = saxReader.read("xml文件路径");

  (2)document的父接口是Node

    - Node中的一些方法

        getName()       获取元素名
        getParent()      获取元素的父元素
        getText()       获取元素的值
        setText(String text) 修改元素的值(这个会覆盖原来的值)

    - document接口的一些方法

        getRootElement()  获取xml的根元素,返回Element

  (3)Element父接口Node

    - Element中的一些方法

        addAttribute(String name, String value)   给元素添加属性

        addText(String text)   在元素原有的值上追加文字

        attributeValue(String name) 获取元素的属性值

        attributeIterator()    返回一个Iterator迭代器

  (4)如果我们对xml进行了增删改,那么我们需要更新xml文件

OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
xmlWriter.write(document);
xmlWriter.close();

 OutputFormat.createPrettyPrint()  : 表示格式化(就是有缩进的格式)

3.实例如下

xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<persion>
<p ID="AAA">
<name>李四</name>
<age>88</age>
</p>
<p>
<name>张三</name>
<age>55</age>
</p>
</persion>

//需求1:获取xml中所有的name元素的值

package Day3;

import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Demo1 {
public static void main(String[] args) throws Exception {
//创建解析器
SAXReader saxReader = new SAXReader();
//得到document
Document document = saxReader.read("src/Day3/text.xml");
//获取根节点
Element element = document.getRootElement();
//获取所有p元素
List<Element> list = element.elements("p");
//遍历p元素
for (Element p : list) {
//获取每个p元素中的name元素
Element name = p.element("name");
//获取name元素的值
String str = name.getText();
//输出
System.out.println(str);
}
}
}

//需求2:查询第一个p元素中的name元素的值

package Day3;

import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Demo2 {
public static void main(String[] args) throws Exception {
//获取解析器(org.dom4j.io.SAXReader)
SAXReader saxReader = new SAXReader();
//获取文档(org.dom4j.Document)
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素(org.dom4j.Element)
Element element = document.getRootElement();
//获取所有的p元素(List集合 java.util.List)
List<Element> list = element.elements("p");
//获取第一个p元素
Element p1 = list.get(0);
//获取第一个name元素
Element name1 = p1.element("name");
//输出第一个name元素的值
System.out.println(name1.getText());
}
}

//需求3:在第一个p元素里面添加一个元素<sex>女</sex>

package Day3;

import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo3 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取第一个p元素
Element p1 = element.element("p");
//在p1里面添加一个标签(<sex>女</sex>)
Element sex = p1.addElement("sex");
//在新添加的标签里面写入文字
sex.setText("女");
//更新xml文件
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
}

//需求4:在指定地方添加元素<school>家里蹲大学</school>

package Day3;

import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
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 Demo4 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取第一个p元素
Element p = element.element("p");
//获取p元素中的所有元素
List<Element> list = p.elements();
//创建需要添加的元素
Element addElement = DocumentHelper.createElement("school");
//在创建的元素中写入文字
addElement.setText("家里蹲大学");
//把创建的元素添加到集合指定的地方
list.add(1, addElement);
//更新xml文件
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
xmlWriter.write(document);
xmlWriter.close(); }
}

//需求5:修改第一个p元素中的age元素的值

package Day3;

import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo5 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取第一个p元素
Element p = element.element("p");
//获取第一个p元素的age元素
Element age = p.element("age");
//修改第一个p元素的age元素的值为30
age.setText("30");
//更新xml
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
}
}

//需求6:删除第二个p元素的name元素

package Day3;

import java.io.FileOutputStream;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo6 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取所有p元素
List<Element> list = element.elements("p");
//获取第二个p元素
Element p2 = list.get(1);
//获取第二个p元素的name元素
Element name = p2.element("name");
//通过父元素删除子元素(要被删除的元素)
p2.remove(name);
//更新xml文件
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
}
}

//需求7:获取第一个p元素的ID值

package Day3;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Demo7 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取第一个p元素
Element p = element.element("p");
//获取第一个p元素的ID值
String strid = p.attributeValue("ID");
//输出
System.out.println(strid);
}
}

最新文章

  1. CSS基本知识6-CSS字体
  2. 开大你的音响,感受HTML5 Audio API带来的视听盛宴
  3. 利用(Tcmalloc) google-perftools优化Nginx和MySQL性能
  4. Restful 支持 自定义序列化
  5. T-SQL XQuery (XML路径查询) (转)http://blog.csdn.net/Beirut/article/details/8150116
  6. SAMBA用户访问指定的目录
  7. Hibernate学习笔记--第一个Hibernate框架程序
  8. fiddler使用之坑
  9. userAgent,JS这么屌的用户代理,你造吗?——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
  10. 大数据之HBase
  11. 【PHP】制作日历
  12. [Swift]LeetCode705. 设计哈希集合 | Design HashSet
  13. IOS开发protocol使用
  14. ubuntu上安装并使用mysql数据库
  15. C# 时间戳与DateTime互转
  16. jmeter 参数化测试
  17. linux系统管理 设置别名
  18. Linux学习11-CentOS如何设置java环境变量
  19. Android让手机主动亮屏的代码
  20. maven依赖信息获取

热门文章

  1. 用soapUI开发webservice接口
  2. brew安装指定版本的软件
  3. Java项目案例之---加法计算器(转发和重定向)
  4. 170821-关于SpringMVC的知识点
  5. 洛谷P1546 最短网络 Agri-Net(最小生成树,Kruskal)
  6. Java常用工具——java包装类
  7. kali 修改MariaDB密码
  8. State Hook
  9. pygame应用——生产者消费者模型
  10. reuseaddr和点对点聊天