xml的简介
1,什么是xml?
- xml是可扩展的标记性语言,主要用于存储数据与数据交互,它与开发平台,编程语言和操作系统无关.
2,xml的主要作用
①,用来保存数据,而且这些数据具有自我描述性
②,它还可以作为项目或者模块的配置文件
③,还可以作为网络传输数据的格式(现在JSON为主)
xml 语法
1,创建一个 xml 文件
2,xml 声明
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 声明 version 是版本的意思 encoding 是编码 -->
-
而且这个<?xml 要连在一起写,否则会有报错
-
属性
version:是版本号
encoding:是 xml 的文件编码
standalone=“yes/no” :表示这个 xml 文件是否是独立的 xml 文件 -
案例:
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book sn="SN1234">
<name>时间简史</name>
<author>霍金</author>
<price>76.9</price>
</book>
<book sn="SN1314">
<name>Java编程思想</name>
<author>未知</author>
<price>100</price>
</book>
</books>
3,xml 注释
- html 和 XML 注释 一样 :
<!-- html 注释 -->
4,元素(标签)
-
什么是 xml 元素?
XML元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物,元素也可以拥有属性。 -
xml 的命名规则
- xml 中的元素(标签)也成分成 单标签和双标签:
5,xml 属性
- xml 的标签属性和 html 的标签属性是非常类似的, 属性可以提供元素的额外信息
- 在标签上可以书写属性:
一个标签上可以书写多个属性。用 每个属性的值必须使用引号引起来。
6,语法规则:
①,所有 XML 元素都须有关闭标签 (也就是闭合)
②,XML 标签对大小写敏感
③,XML 必须正确的嵌套
④,XML 文档必须有根元素
- 根元素就是顶级元素,没有父标签的元素,叫顶级元素。根元素是没有父标签的顶级元素,而且是唯一一个才行。
⑤,XML 中的特殊字符
> 特殊字符:>
< 特殊字符:<
⑥,文本区域(CDATA 区)
- CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析
- CDATA 格式:
dom4j 解析技术
1,xml解析技术的介绍
-
早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 和 Sax 简介( 已经过时)
-
第三方的解析:
jdom 在 dom 基础上进行了封装 。
dom4j 又对 jdom 进行了封装。
pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件。 -
这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。
2,Dom4j 类库使用需要导入的jar包
- 加载jar包
3,Dom4j 的使用案例
- 目录结构
- books.xml
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book sn="SN1234">
<name>时间简史</name>
<author>霍金</author>
<price>76.9</price>
</book>
<book sn="SN1314">
<name>Java编程思想</name>
<author>未知</author>
<price>100</price>
</book>
</books>
- Book.class(实体)
public class Book {
private String sn;
private String name;
private BigDecimal price;
private String autor;
set,get,toString
}
- Dom4jTest.class(测试)
/**
* @author Tommey周
* @create 2020-05-18 7:59
*/
public class Dom4jTest {
@Test
public void test1() throws DocumentException {
//1,通过创建SAXReader对象。来读取xml文件,获取Document对象
SAXReader reader = new SAXReader();
Document document = reader.read("xml/books.xml");
//2,通过Document对象。拿到xml的根元素对象
Element rootElement = document.getRootElement();
//System.out.println("将当前元素转换成String对象"+rootElement.asXML());
//3,通过根元素对象。获取所有的book标签对象
List<Element> books = rootElement.elements("book");
//4,遍历每个book标签对象。然后获取到book标签对象内的每一个元素
for (Element book: books) {
System.out.println("编号:"+book.attribute("sn").getText() +"\t书名:"+book.element("name").getText()+"\t作者:"+book.element("author").getText()
+"\t价格:"+book.element("price").getText());
}
}
}