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文档相关推荐

  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. 分别使用dom和dom4j解析XML文档

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

  5. maven中用dom4j解析xml文档

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

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

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

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

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

  8. Java 使用SAX解析XML文档

    DOM,即Document Object Model,中文叫文档对象模型.DOM是W3C定义的标准文档对象模型,是一个与操作系统和编程语言无关的.用于内存存储和操作层次化文档的模型.当按 照DOM模型 ...

  9. DOM4J解析XML文档

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

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

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

最新文章

  1. linux 格式化未分配区间,Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令...
  2. Android USB 属性设置:ADB、RNDIS、MTP等
  3. [Linux] Ubuntu下的文件比较工具--meld
  4. maven jar包下载
  5. this.scrollheight获取textarea的高度是0_53小米电子时钟/v1.0 介绍
  6. sklearn学习笔记之preprocessing
  7. javascript在使用时要注意的东西
  8. springcloud之eureka集群搭建
  9. apms阅卷系统服务器,APMS全通纸笔王网上阅卷系统网上操作指南.doc
  10. sql java驱动程序_microsoft sql server jdbc驱动下载
  11. 超实用的!南京南站最新停车指南来了
  12. 描写火车站场景_优美段落:描写车站的经典美文摘抄
  13. 毕业N年后,请不要像我一样被档案烦死——转自一位已经毕业的学姐
  14. 8086微处理器的寄存器
  15. 10G SR光模块取消ER调试可行性分析
  16. PTA甲级 1043 Is It a Binary Search Tree (25分) 树的遍历
  17. scratch项目:自制电子画板(Scratch画笔类积木、事件类积木中消息广播的应用)
  18. 曾经的四大门户网站之一,新浪,这些年错过了三个重要的成长机会
  19. http数字请求 (错误请求聚合)
  20. 再谈systemverilog中automatic与static

热门文章

  1. 如何选择一家好的java培训?
  2. 经典九大排序(1)——简单排序
  3. dll是什么,简单理解,dll怎么用,动态链接库的优缺点,dll与exe的区别
  4. 泛微华南牵手深圳前海第三方供应链数据方案有限公司
  5. python产品经理_数据产品经理该懂的python技术
  6. 强化学习(一)Deep Q-Network
  7. 刷机精灵android版授权教程6,元素方尖狂战士天赋选择 元素方尖天赋选择攻略
  8. C++ sort排序函数详解
  9. node微信小程序支付验证
  10. IDEA Maven 下载源码报错 Cannot download sources Sources not found for: XXX