XML
1、XML简介
-
什么是xml?
xml是可扩展的标记性语言
-
xml的作用?
xml的主要作用有:
- 用来保存数据,而且这些数据具有自我描述性
- 它还可以作为项目或者模块的配置文件
- 还可以作为网络传输数据的格式(现在以JSON为主)
2、xml语法
- 文档声明
- 元素(标签)
- xml属性
- xml注释
- 文本区域(CDATA区)
2.1、文档声明
xml version="1.0" encoding="utf-8" ?>
<!--
<?xml version="1.0" encoding="utf-8" ?>
以上内容是XML文件的声明
version="1.0" version 是XML文件的版本
encoding="utf-8" encoding 是XML文件本身的编码
-->
<books><!--books表示多个图书信息-->
<book sn="SN001"><!--book表示一个图书信息,sn属性表示图书馆序列号-->
<name>C语言程序设计</name><!--name表示图书名称-->
<author>William</author><!--author表示图书作者-->
<price>100</price><!--price表示图书价格-->
</book>
<book sn="SN002">
<name>java程序设计</name>
<author>林老师</author>
<price>100</price>
</book>
</books>
2.2、xml注释
一样的:
2.3、元素(标签)
先回忆一下:
html标签:
格式:<标签名>封装的数据</标签名>
单标签:<标签名/> <br/>换行 <hr/>水平线
双标签:<标签名>封装的数据</标签名>
标签名大小写不敏感
标签有属性,有基本属性和事件属性
标签要闭合(不闭合,html中不报错,但我们要养成良好的书写习惯,注意闭合)
2.3.1、什么是xml元素?
什么是 XML 元素?
XML元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
2.3.2、xml的命名规则
XML元素必须遵循以下命名规则
- 名称可以含字母、数字以及其他字符
- 名称不能以数字或者表单符号开始
- 名称不能以字符”xml“(或者XML,Xml)开始
- 名称不能包含空格
2.3.3、xml中的元素(标签)也分成单标签和双标签
单标签
格式:<标签名 属性=”值“ 属性=”值“……/>
双标签:
格式:<标签名 属性=”值“ 属性=”值“……>文本数据或者子标签</标签名>
<book sn="SN002">
<name>java程序设计</name>
<author>林老师</author>
<price>100</price>
</book>
<book sn="SN003" name="Web" author="林老师" price="100"/>
2.4 、xml属性
xml的标签属性和html的标签属性是非常类似的,属性可以提供元素的额外信息
在标签是可以书写属性:
一个标签上可以书写多个属性。每个属性的值必须用引号引起来。
注意:如果属性值本身包含双引号,那么有必要使用单引号包围它
2.5、xml其他语法规则
-
所有XML元素都必须有关闭标签(也就是闭合)
不闭合就会报错
-
XML标签对大小写敏感
-
XML必须正确的嵌套
-
XML文档必须有根元素
根元素就是顶级元素
没有父标签的元素,叫做顶级元素
根元素是没有父标签的顶级元素,而且是唯一一个才行。
-
xml属性值必须加引号
-
xml中的特殊字符
<; < 小于 >; > 大于 &; & 和号 &apos; ' 省略号 "; " 引号 -
文本区域(CDATA区)
CDATA语法可以告诉xml解析器,我CDATA里的文本内容,只是纯文本,不需要xml语法解析。
CDATA格式:
<![CDATA[这里可以把想输入的字符原样显示,不会解析xml]]>
3、xml解析技术介绍
xml是可扩展的标记语言。
不管是html文件还是xml文件它们都是标记型文档,都可以使用w3c组织制定的dom技术来解析。
XML文档对象模型定义访问和操作XML文档的标准方法
DOM将XML文档作为一个树形结构,而树叶被定义为节点。
document对象表示的是整个文档(可以是html文档也可以是xml文档)
早期jdk为我们提供了两种xml解析技术Dom和Sax简介(已经过时,但是我们需要知道这两种技术)
这个Dom4j它是第三方的解析技术,我们需要使用第三方给我们提供好多类库才能解析xml文件
4、dom4j解析技术(重点)
由于dom4j它不是sun公司的技术,而属于第三方公司,我们需要使用dom4j就需要到dom4j官网下载dom4j的jar包
4.1、Dom4j类库的使用
4.2、Dom4j常用目录介绍
4.3、dom4j编程步骤:
第一步:先加载xml文件创建Document对象
第二步:提供Document对象拿到根元素对象
第三步:提供根元素.elements(标签名);可以返回一个集合,这个集合里放着所有你指定的标签名的元素对象
第四步:找到你想修改、删除的子元素,进行相应的操作
第五步:保存到硬盘上
4.4、获取document对象
创建一个lib目录,并添加到dom4j的jar包,并添加到类路径。
package com.lxg.pojo;
import jdk.jfr.StackTrace;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;
public class Dom4jTest {
@Test
public void test1() throws DocumentException {
//创建一个SaxReader输入流,去读取xml配置文件,生成Document对象
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/books.xml");
System.out.println(document);
}
/**
* 读取books.xml文件生成book类
*/
@Test
public void test2() throws DocumentException {
//1、读取books.xml文件
SAXReader saxReader = new SAXReader();
//在Junit测试中,相对路径是从模块名称开始算
Document document=saxReader.read("src/books.xml");
//2、通过Document对象获取根元素
Element rootElement = document.getRootElement();
//System.out.println(document);
//3、通过根元素获取book标签对象
//element()和elements()都是通过标签名称来获取子元素对象
List<Element> books = rootElement.elements("book");
//4、通过遍历,处理每个book标签转换为Book类
for (Element book : books) {
//asXML()方法,返回标签对象的xml格式字符串
//System.out.println(book.asXML());
Element nameElement = book.element("name");
//getText()方法,返回标签对象的文本内容
String nameText = nameElement.getText();
//System.out.println(nameText);
//直接获取指定标签的文本内容
String priceText = book.elementText("price");
String authorText = book.elementText("author");
String snVlaue = book.attributeValue("sn");
System.out.println(new Book(snVlaue, nameText,authorText,priceText));
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book sn="SN001">
<name>The Hitchhiker's Guide to the Galaxy</name>
<author>Douglas Adams</author>
<price>5.99</price>
</book>
<book sn="SN002">
<name>The Restaurant at the End of the Universe</name>
<author>Douglas Adams</author>
<price>5.99</price>
</book>
</books>
标签:XML,xml,dom4j,标签,元素,book
From: https://www.cnblogs.com/SilverStar/p/17415191.html