先下载dom4j jar包,引入到项目中后开始使用。下载连接在文章末尾。

示例:解析如下phoneInfo.xml
phoneInfo.xml

<?xml version="1.0" encoding="utf-8"?><PhoneInfo> <Brand name="华为"> <Type name="Mate30 Pro"/>  <Type name="P30 Pro"/>  <Type name="nova6"/> </Brand>  <Brand name="苹果"> <Type name="iPhone11 Pro"/> </Brand>
</PhoneInfo>

解析代码:

package com.yhzz.package6;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;import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;public class DOM4JPracitce {//全局DocumentDocument document = null;//要解析的XML文档的绝对路径String path = "E:\\IdeaProjects\\javaProject\\xmlDemo\\src\\com\\yhzz\\package6\\phoneInfo.xml";//获得Document对象public void getDocument(){//通过解析器解析XML文件,获取DocumentSAXReader saxReader = new SAXReader();try {document = saxReader.read(path);} catch (DocumentException e) {e.printStackTrace();}}//保存信息到XML文档public void saveXML(String path){//输出保存时的格式(如编码等)OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");try {//创建一个XMLWriter对象(等同于DOM解析中的转换器)XMLWriter writer = new XMLWriter(new FileWriter(path),format);writer.write(document);//关闭资源writer.close();} catch (IOException e) {e.printStackTrace();}}//增 添加新的手机收藏信息(品牌和型号)public void add(){//获取根节点Element root = document.getRootElement();//为根节点添加一个Brand元素,name属性赋值为"三星"Element brand = root.addElement("Brand");//为Brand元素添加属性和属性值brand.addAttribute("name","三星");//为Brand元素节点添加子节点TypeElement type = brand.addElement("Type");//为Type元素添加属性和属性值type.addAttribute("name","Galaxy");//将新增后的信息保存到xml文件中this.saveXML(path);}//删 删除手机信息(删除品牌为华为的手机信息)public void delete(){//获得XML的根元素Element root = document.getRootElement();//获得所有的Brand子元素,判断子元素的属性是否有华为,有的话删除Iterator<Element> brandsIte = root.elementIterator();while (brandsIte.hasNext()){Element brand = brandsIte.next();if(brand.attributeValue("name").equals("华为")){//通过父节点删除子节点brand.getParent().remove(brand);}}//将删除后的信息保存到xml文件中this.saveXML(path);}//改 修改手机信息,为手机Brand元素添加属性idpublic void update(){//获取根节点Element root = document.getRootElement();//遍历获取Brand元素节点Iterator<Element> brandIte = root.elementIterator();int id = 0;while (brandIte.hasNext()){Element brand = brandIte.next();//为Brand元素节点添加属性idbrand.addAttribute("id",0+"");}//将修改后的信息存储到xml文件中this.saveXML(path);}//显示手机信息public void showInfo(){//获得根节点Element root = document.getRootElement();//获得根节点下的子节点并进行遍历Iterator<Element> brandIte = root.elementIterator();while (brandIte.hasNext()){//遍历迭代器中的每一个节点Element brand = brandIte.next();//通过Element中的attributeValue("name")方法获取属性值System.out.println(brand.attributeValue("name"));//获取品牌节点下的子节点-手机型号Iterator<Element> typeIte = brand.elementIterator();while (typeIte.hasNext()){Element type = typeIte.next();//根据属性名称获取属性值System.out.println("\t"+type.attributeValue("name"));}}}public static void main(String[] args) {DOM4JPracitce pracitce = new DOM4JPracitce();pracitce.getDocument();//增pracitce.add();//删pracitce.delete();//改pracitce.update();//查pracitce.showInfo();}
}

dom4j jar包下载地址

使用DOM4J解析XML文档相关推荐

  1. 【学习笔记】关于DOM4J:使用DOM4J解析XML文档

    一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org. ...

  2. Dom4j 解析Xml文档及XPath查询 学习笔记

    本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" -- 在当前浏览器页面,按键 "Ctrl+F" 按键 ...

  3. Dom4j 解析Xml文档及 XPath查询 学习笔记

    2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" ...

  4. Javaweb使用dom4j解析xml文档的一般姿势

    使用dom4j解析xml文档之前必须引入jar public class TestDom4j {@Testpublic void testReadWebXML() {try {// 1.获取解析器SA ...

  5. 分别使用dom和dom4j解析XML文档

    1.dom和dom4j的特点 dom是基于XML的树结构来完成解析的.dom解析XML文档时,会根据读取的文档,构建一个驻留内存的树结构,然后就可以使用dom接口来对XML文档进行增删查改等操作.do ...

  6. maven中用dom4j解析xml文档

    1.需求分析 关于dom4j的详细使用方法请参考:https://blog.csdn.net/qq_41860497/article/details/84339091 在xml中存储了过滤器的的初始化 ...

  7. DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...

    Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM开发的.与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了 ...

  8. DOM4J解析XML文档

    一.XML概述 XML可扩展标记语言,类似HTML XML的设计宗旨是传输数据而非显示数据 XML被设计具有自我描述性 XML没有被预定义,需要自己定义标签 XML不是HTML的替代,它们两个是为不同 ...

  9. 使用DOM4J解析XML文档,输出所有学员信息和添加学生信息

    使用DOM4J要导包 xml信息 <?xml version="1.0" encoding="UTF-8"?><students> &l ...

最新文章

  1. 常见面试题:为什么MySQL索引要用B+Tree呢?(看完你就能和面试官笑谈人生了)
  2. 了解大脑的“小情绪”,轻松成为“效率达人”
  3. isnull的使用方法
  4. PHP的Excel操作
  5. 起名与选择器~(总结类、持续更新系列)
  6. @RequiresPermissions 注解说明
  7. 图书管理销售系统需求分析报告,对性能的规定以及运行环境规定部分
  8. zabbix自动发现监控redis数据库
  9. JAMStack-SSR/SSG 框架
  10. php数据类型之自动转换和强制转换
  11. FileZillaServer创建FTP服务器
  12. SpringBoot 简易拦截器实现
  13. 赛尔号什么时候支持html5,赛尔号5月25日更新攻略汇总 赛伯斯特完全体降临
  14. 计算3个地理坐标点之间的夹角
  15. 好心情:当你被告知你患有抑郁症了,该怎么办
  16. 深度学习之神经网络基础(1)——感知器,S型神经元,梯度下降法,神经网络架构
  17. 【惑星记】python学习002----------------pyqt5安装
  18. 谈谈我对 iPhone5 全景照相机 的理解
  19. 全网最佳优惠券使用算法
  20. 判断FTP文件是否传输完成

热门文章

  1. 微服务项目-常见问题-启动前端renrenfast报错
  2. ARM Fast Model下 u-boot调试(三)---搭建基于ds-5的fvp模拟器环境
  3. 艾默生质量流量计结构坚固安装简便
  4. 用VHDL语言实现电子计时时钟
  5. VHDL硬件描述语言(三)VHDL语言要素
  6. 开源DMS - 文档管理系统 - logicaldoc 里面转换SWF
  7. Java 8 辣么大(lambda)表达式不慌之-----(一)Function
  8. matplotlib绘图库
  9. ERROR: PyAudio-0.2.11-cp37-cp37m-win32.whl is not a supported wheel on this platform.问题解决方法
  10. 下载资源前请务必先阅读!