使用DOM4J解析XML文档
先下载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文档相关推荐
- 【学习笔记】关于DOM4J:使用DOM4J解析XML文档
一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org. ...
- Dom4j 解析Xml文档及XPath查询 学习笔记
本文查阅方法: 1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题 2.快捷"查找" -- 在当前浏览器页面,按键 "Ctrl+F" 按键 ...
- Dom4j 解析Xml文档及 XPath查询 学习笔记
2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法: 1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题 2.快捷"查找" ...
- Javaweb使用dom4j解析xml文档的一般姿势
使用dom4j解析xml文档之前必须引入jar public class TestDom4j {@Testpublic void testReadWebXML() {try {// 1.获取解析器SA ...
- 分别使用dom和dom4j解析XML文档
1.dom和dom4j的特点 dom是基于XML的树结构来完成解析的.dom解析XML文档时,会根据读取的文档,构建一个驻留内存的树结构,然后就可以使用dom接口来对XML文档进行增删查改等操作.do ...
- maven中用dom4j解析xml文档
1.需求分析 关于dom4j的详细使用方法请参考:https://blog.csdn.net/qq_41860497/article/details/84339091 在xml中存储了过滤器的的初始化 ...
- DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...
Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM开发的.与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了 ...
- DOM4J解析XML文档
一.XML概述 XML可扩展标记语言,类似HTML XML的设计宗旨是传输数据而非显示数据 XML被设计具有自我描述性 XML没有被预定义,需要自己定义标签 XML不是HTML的替代,它们两个是为不同 ...
- 使用DOM4J解析XML文档,输出所有学员信息和添加学生信息
使用DOM4J要导包 xml信息 <?xml version="1.0" encoding="UTF-8"?><students> &l ...
最新文章
- 常见面试题:为什么MySQL索引要用B+Tree呢?(看完你就能和面试官笑谈人生了)
- 了解大脑的“小情绪”,轻松成为“效率达人”
- isnull的使用方法
- PHP的Excel操作
- 起名与选择器~(总结类、持续更新系列)
- @RequiresPermissions 注解说明
- 图书管理销售系统需求分析报告,对性能的规定以及运行环境规定部分
- zabbix自动发现监控redis数据库
- JAMStack-SSR/SSG 框架
- php数据类型之自动转换和强制转换
- FileZillaServer创建FTP服务器
- SpringBoot 简易拦截器实现
- 赛尔号什么时候支持html5,赛尔号5月25日更新攻略汇总 赛伯斯特完全体降临
- 计算3个地理坐标点之间的夹角
- 好心情:当你被告知你患有抑郁症了,该怎么办
- 深度学习之神经网络基础(1)——感知器,S型神经元,梯度下降法,神经网络架构
- 【惑星记】python学习002----------------pyqt5安装
- 谈谈我对 iPhone5 全景照相机 的理解
- 全网最佳优惠券使用算法
- 判断FTP文件是否传输完成
热门文章
- 微服务项目-常见问题-启动前端renrenfast报错
- ARM Fast Model下 u-boot调试(三)---搭建基于ds-5的fvp模拟器环境
- 艾默生质量流量计结构坚固安装简便
- 用VHDL语言实现电子计时时钟
- VHDL硬件描述语言(三)VHDL语言要素
- 开源DMS - 文档管理系统 - logicaldoc 里面转换SWF
- Java 8 辣么大(lambda)表达式不慌之-----(一)Function
- matplotlib绘图库
- ERROR: PyAudio-0.2.11-cp37-cp37m-win32.whl is not a supported wheel on this platform.问题解决方法
- 下载资源前请务必先阅读!