JavaWeb1——第5章 XML

1、XML 简介

xml 是可扩展的标记性语言。

2、XML主要作用有:

1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件
3、还可以做为网络传输数据的格式(现在 JSON 为主)。

3、xml 语法

  1. 文档声明。
  2. 元素(标签)
  3. xml 属性
  4. xml 注释
  5. 文本区域(CDATA 区)

3.1、文档声明

JavaWeb1——第5章 XML_第1张图片

eg:创建一个简单 XML 文件,用来描述图书信息



<books> 
    <book id="SN123123413241"> 
        <name>java编程思想name> 
        <author>华仔author>		
        <price>9.9price>		
    book>
    <book id="SN12341235123">	
        <name>葵花宝典name>	
        <author>班长author>	
        <price>5.5price>	
    book>
books>

3.2、xml 注释

html 和 XML 注释 一样 :
IDEA中快捷键:Ctrl+Shift+/

3.3、元素(标签)

1)元素定义

元素是指从开始标签到结束标签的内容。
eg:

<title>java 编程思想title> 
元素 我们可以简单的理解为是 标签。

2)XML命名规则

2.1)名称可以含字母、数字以及其他的字符

eg:

<book id="SN213412341">  <author>班导author>  <name>java 编程思想name>  <price>9.9price>  book> 
2.2)名称不能以数字或者标点符号开始
2.3)名称不能包含空格

3)xml 中的元素(标签)也 分成 单标签和双标签

单标签格式: <标签名 属性=”值” 属性=”值” … />
双标签格式:< 标签名 属性=”值” 属性=”值” …>文本数据或子标签
eg:

<name>java编程思想name> 双标签
<book id="SN12341235123">	但标签

3.4、xml 属性

xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性: 一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。 的规则和标签的书写规则一致。
属性必须使用引号引起来,不引会报错示例代码

3.5、语法规则

3.5.1)所有 XML 元素都须有关闭标签(也就是闭合)

JavaWeb1——第5章 XML_第2张图片

3.5.2)XML 标签对大小写敏感

JavaWeb1——第5章 XML_第3张图片

3.5.3)XML 必须正确地嵌套

JavaWeb1——第5章 XML_第4张图片

3.5.4)XML 文档必须有根元素

根元素就是顶级元素
没有父标签的元素,叫顶级元素。
根元素是没有父标签的顶级元素,而且是唯一一个才行
JavaWeb1——第5章 XML_第5张图片

3.5.5)XML 的属性值须加引号

JavaWeb1——第5章 XML_第6张图片

3.5.6)XML 中的特殊字符

JavaWeb1——第5章 XML_第7张图片

3.5.7)文本区域(CDATA 区)

CDATA 语法可以告诉 xml 解析器, CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析

CDATA 格式:

eg:
JavaWeb1——第5章 XML_第8张图片

4、xml 解析技术介绍

xml 可扩展的标记语言。 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析
JavaWeb1——第5章 XML_第9张图片

document 对象表示的是整个文档(可以是 html 文档,也可以是 xml 文档)

早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)

dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。 Java 对 dom 技术解析标记也做了实现。

sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple API for XML ) SAX 解析,它跟 W3C 制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容。 它是一行一行的读取 xml 文件进行解析的。不会创建大量的 dom 对象。 所以它在解析 xml 的时候,在内存的使用上。和性能上。都优于 Dom 解析。

第三方的解析: jdom 在 dom 基础上进行了封装 、 dom4j 又对 jdom 进行了封装。 pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件。

这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。

5、dom4j 解析技术(重点*****)

由于 dom4j 它不是 sun 公司的技术,而属于第三方公司的技术,我们需要使用 dom4j 就需要到 dom4j 官网下载 dom4j 的 jar 包。

5.1、Dom4j 类库的使用

JavaWeb1——第5章 XML_第10张图片
解压后:
JavaWeb1——第5章 XML_第11张图片

5.2、dom4j 目录的介绍:

1)docs 是 文 档 目 录

JavaWeb1——第5章 XML_第12张图片

1.1)如何查 Dom4j 的文档

JavaWeb1——第5章 XML_第13张图片

1.2)Dom4j 快速入门

JavaWeb1——第5章 XML_第14张图片

2)lib 目录

JavaWeb1——第5章 XML_第15张图片

3)src 目录是第三方类库的源码目录:

JavaWeb1——第5章 XML_第16张图片

5.3、dom4j 编程步骤:

第一步: 先加载 xml 文件创建 Document 对象
第二步:通过 Document 对象拿到根元素对象
第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
第四步:找到你想要修改、删除的子元素,进行相应在的操作
第五步,保存到硬盘上

5.4、获取 document 对象

创建一个 lib 目录,并添加 dom4j 的 jar 包。并添加到类路径。
JavaWeb1——第5章 XML_第17张图片

需要解析的 books.xml 文件内容:

 
<books> 
	<book sn="SN12341232"> 
		<name>辟邪剑谱name> 
		<price>9.9price>
		<author>班主任author> 
	book> 
	<book sn="SN12341231"> 
		<name>葵花宝典name> 
		<price>99.99price> 
		<author>班长author> 
	book> 
books>

解析获取 Document 对象的代码 第一步,先创建 SaxReader 对象。这个对象,用于读取 xml 文件,并创建 Document

/** 
	dom4j 获取 Documet 对象 
*/ 
@Test 
public void getDocument() throws DocumentException {
	 // 要创建一个 Document 对象,需要我们先创建一个 SAXReader 对象 
	 SAXReader reader = new SAXReader(); 
	 // 这个对象用于读取 xml 文件,然后返回一个 Document。 
	 Document document = reader.read("src/books.xml"); 
	 // 打印到控制台,看看是否创建成功 
	 System.out.println(document);

5.5、遍历 标签 获取所有标签中的内容(*****重点)

/** 
	读取 xml 文件中的内容 
	*/ 
@Test 
public void readXML() throws DocumentException {
	// 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象 
	SAXReader reader = new SAXReader(); Document document = reader.read("src/books.xml"); 
	// 第二步,通过 Document 对象。拿到 XML 的根元素对象 
	Element root = document.getRootElement(); 
	// 打印测试 
	// Element.asXML() 它将当前元素转换成为 String 对象 
	// System.out.println( root.asXML() ); 
	// 第三步,通过根元素对象。获取所有的 book 标签对象 
	// Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合 
	List<Element> books = root.elements("book"); 
	// 第四布,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素, 
	for (Element book : books) { 
		// 测试 
		// System.out.println(book.asXML()); 
		// 拿到 book 下面的 name 元素对象 
		Element nameElement = book.element("name"); 
		// 拿到 book 下面的 price 元素对象 
		Element priceElement = book.element("price"); 
		// 拿到 book 下面的 author 元素对象 
		Element authorElement = book.element("author"); 
		// 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容 
		System.out.println("书名" + nameElement.getText() + 
		" , 价格:" + priceElement.getText() + ", 作者:" + authorElement.getText()); 
		} 
}

6、配置Tomcat

链接: link.

你可能感兴趣的:(JavaWeb,xml,html,java)