Java-使用Dom4j解析xml文档
1. xml介绍
- 可扩展的标记性语言
2. 作用
- 存储数据
- 可以作为项目的配置文件
- 作为网络传输数据的格式(现在一般以json为主)
3. 语法注意事项
- 语法与HTML类似
- 一定要有开头的xml声明
- 标签名称不可以有空格
- 所有的xml标签必须要有闭合标签
- 对大小写敏感
- 必须有根元素特殊字符:
- >
- <
- CDATA区(文本区域)
- CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析
- <![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]>
4. xml文本示例
<?xml version="1.0" encoding="utf-8" ?>
<!--<?xml version="1.0" encoding="utf-8" ?>以上内容是xml的声明,说明这是一个xml文件- version表示本身- encoding表示xml文件的编码方式- 格式要求很严格,一点都不可以错
--><books><book sn="001"> <!-- sn是book的属性 --><name>时间简史</name><author>霍金</author><price>26.9</price></book><book sn="002"><name>你好</name><author>作者2</author><price>269</price></book><![CDATA[<book sn="002"><name>你好</name><author>作者2</author><price>269</price></book>这里是文本内容,不会被解析]]>
</books>
5. Java对xml解析技术的介绍
- 不管是 html 文件还是 xml 文件,它们都是标记型文件,均可使用 w3c 组织制定的 dom 技术来解析
- 早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax【已经过时】
- dom 解析技术是 W3C 组织制定的,所有的编程语言都对这个解析技术使用了自己语言的特点进行实现, Java 对 dom 技术解析标记也做了实现
- sun 公司在 JDK5 版本对 dom 解析技术进行升级,SAX 解析
- 之后又延申出的第三方解析
- jdom解析:在 dom 基础上进行了封装
- dom4j解析: 又对 jdom 进行了封装【主要使用的解析方式】
- pull 主要用在 Android 手机开发
- 核心:DOM解析是本质【个人认为】
- Dom4j 是第三方的解析技术,需要使用第三方给我们提供好的类库才可以解析 xml 文件
6. Dom4j类库的介绍
- 先得到一个zip压缩包
- 解压后,得到一个文件夹dom4j-1.6.1,文件夹的主要内容有
- docs:里面有很多html文件,其中一个index.html文件,是dom4j的使用文档
- lib:存放了dom4j的依赖包
- src:存放了dom4j依赖包的源码
- dom4j-1.6.1.jar:这个jar包就是我们要用的项目里面的依赖包
- 在项目中新建一个目录,一般取名为lib
- 将dom4j-1.6.1.jar复制到lib下
- 之后将lib目录添加为库
- 之后就可以正常使用dom4j了
7. 简单使用
@Test
public void test1() throws Exception {// 1. 创建一个 SAXReader输入流SAXReader reader = new SAXReader();// 2. 使用输入流读取xml文件,生成Document对象// -- 这里的是相对路径// -- 当前所在路径与项目的src同级Document document = reader.read("./xml/books.xml"); // 3. 现在已经获得了xml文件的Java对象——document
}
8. 基于Element的层级关系获取元素
@Test
public void test2() throws Exception {// 1. 读取,生成Document对象SAXReader reader = new SAXReader();Document document = reader.read("./xml/books.xml");// 2. 获取根元素Element root = document.getRootElement();// 3. Element.asXML()// -- 将当前元素转换成为格式化过的 String 对象// -- 一般用来调试代码使用,查看是否正确获取到结果System.out.println(root.asXML());// 4. Element.element(标签名)// -- 获取当前元素下面的一个指定元素// -- 返回的是第一个符合的Element ele = root.element("book");// 5. Element.getText()【待测】// -- 获取当前标签的文本内容// -- 如果当前元素下面 没有其他标签, 只有文本内容, 只获取文本// -- 如果当前元素下面 既有标签, 又有文本内容, 只获取文本// -- 如果当前元素下面 只有标签, 没有文本内容, 什么都获取不到// -- 如果当前元素下面 即没有标签, 也没有文本内容, 什么都获取不到System.out.println(ele.getText());// 6. Element.elements(标签名)// -- 获取当前元素下面的指定元素的集合// -- 返回List<Element>List<Element> list = root.elements("book");for (Element e : list) {System.out.println("===============================");System.out.println(e);System.out.println(e.element("name").getText());System.out.println(e.element("author").getText());System.out.println(e.element("price").getText());}
}
9. 基于Node的xpath获取元素
- 需要使用xpath进行解析,需要额外jaxen包的依赖支持
- 如果xpath语法不了解的话,可以参考我写的另一篇博文Python-xpath与bs4,虽然是用Python写的,但是xpath的语法是一样的
@Test
public void test3() throws Exception {// 1. 读取,生成Document对象SAXReader reader = new SAXReader();Document document = reader.read("./xml/books.xml");// 2. 返回单个元素是NodeNode node = document.selectSingleNode("/books/book[2]/author");System.out.println(node.getText());// 3. 返回多个元素是List<Node>List<Node> list = document.selectNodes( "//name" );for (Node n:list) {// 4. 获取元素的文本是:Node.getText()System.out.println(n.getText());}
}
10. 两个jar包
下载地址如下,自提
- jaxen-1.1.2.jar:提取码bugu
- dom4j-1.6.1.jar:提取码bugu
Java-使用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.快捷"查找" ...
- 分别使用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中存储了过滤器的的初始化 ...
- Javaweb使用dom4j解析xml文档的一般姿势
使用dom4j解析xml文档之前必须引入jar public class TestDom4j {@Testpublic void testReadWebXML() {try {// 1.获取解析器SA ...
- DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...
Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM开发的.与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了 ...
- Java 使用SAX解析XML文档
DOM,即Document Object Model,中文叫文档对象模型.DOM是W3C定义的标准文档对象模型,是一个与操作系统和编程语言无关的.用于内存存储和操作层次化文档的模型.当按 照DOM模型 ...
- DOM4J解析XML文档
一.XML概述 XML可扩展标记语言,类似HTML XML的设计宗旨是传输数据而非显示数据 XML被设计具有自我描述性 XML没有被预定义,需要自己定义标签 XML不是HTML的替代,它们两个是为不同 ...
- 使用DOM4J解析XML文档,输出所有学员信息和添加学生信息
使用DOM4J要导包 xml信息 <?xml version="1.0" encoding="UTF-8"?><students> &l ...
最新文章
- linux 格式化未分配区间,Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令...
- Android USB 属性设置:ADB、RNDIS、MTP等
- [Linux] Ubuntu下的文件比较工具--meld
- maven jar包下载
- this.scrollheight获取textarea的高度是0_53小米电子时钟/v1.0 介绍
- sklearn学习笔记之preprocessing
- javascript在使用时要注意的东西
- springcloud之eureka集群搭建
- apms阅卷系统服务器,APMS全通纸笔王网上阅卷系统网上操作指南.doc
- sql java驱动程序_microsoft sql server jdbc驱动下载
- 超实用的!南京南站最新停车指南来了
- 描写火车站场景_优美段落:描写车站的经典美文摘抄
- 毕业N年后,请不要像我一样被档案烦死——转自一位已经毕业的学姐
- 8086微处理器的寄存器
- 10G SR光模块取消ER调试可行性分析
- PTA甲级 1043 Is It a Binary Search Tree (25分) 树的遍历
- scratch项目:自制电子画板(Scratch画笔类积木、事件类积木中消息广播的应用)
- 曾经的四大门户网站之一,新浪,这些年错过了三个重要的成长机会
- http数字请求 (错误请求聚合)
- 再谈systemverilog中automatic与static
热门文章
- 如何选择一家好的java培训?
- 经典九大排序(1)——简单排序
- dll是什么,简单理解,dll怎么用,动态链接库的优缺点,dll与exe的区别
- 泛微华南牵手深圳前海第三方供应链数据方案有限公司
- python产品经理_数据产品经理该懂的python技术
- 强化学习(一)Deep Q-Network
- 刷机精灵android版授权教程6,元素方尖狂战士天赋选择 元素方尖天赋选择攻略
- C++ sort排序函数详解
- node微信小程序支付验证
- IDEA Maven 下载源码报错 Cannot download sources Sources not found for: XXX