XML学习笔记1 2021-9-24

什么是xml?
xml是可扩展的标记性语言

xml主要作用?
1.用来保存数据
而且这些数据具有自我描述性

students.xml
<students>
	<student>
		<id>1</id>
		<name>华仔</name>
	</student>
	<student>
		<id>2</id>
		<name>张三</name>
	</student>
</students>

2.还可以作为项目或者框架的配置文件
3.还可以作为网路传输数据的格式(现在以JSON为主)

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

简单xml实例

<?xml version="1.0" encoding="utf-8" ?>         <!--如果没有提示错误信息的IDE 可以使用浏览器打开 可以获得提示-->
<!--
    <?xml version="1.0" encoding="utf-8" ?>
    以上内容是对xml文件的声明
    version="1.0"       version表示xml版本
    encoding="utf-8"    encoding表示xml文件本身的编码
-->
<books>                                 <!--books表示多个图书信息-->
    <book sn="SN7414213">                 <!--book表示一个图书信息 sn表示图书序列号-->
        <name>时间简史</name>           <!--name表示书名-->
        <author>霍金</author>            <!--author表示作者-->
        <price>75</price>               <!--price表示图书价格-->
    </book>
    <book sn="SN7466414">                 <!--book表示一个图书信息 sn表示图书序列号-->
        <name>Java从入门到放弃</name>           <!--name表示书名-->
        <author>高哥</author>            <!--author表示作者-->
        <price>9.9</price>               <!--price表示图书价格-->
    </book>
</books>

xml语法介绍
注释
注释与html一样 < !-- – >(<跟!间没有空格 -与>之间也没有空格)

元素(标签)
回忆一下html标签
格式:<标签名>封装的数据</标签名>
单标签:<标签名/>
双标签:<标签名>封装的数据</标签名>
标签名大小写不敏感
标签有属性有基本属性和事件属性
标签要闭合(不闭合 html不报错 但是要养成好的书写习惯 语法要求闭合)

xml元素是开始标签和结束标签内的部分
元素可以有子元素和属性

xml名称规范
名称可以包含字母数字以及其他字符
文档中说名称不能以 "xml"开头(但是实际操作是可以的)
名称不能包含空格(会看成属性)
名称也分别有单标签与双标签

</book sn="SN313564" name="辟邪剑谱" author=“林平之” price="999999">

xml属性
1.xml属性可以提供元素的额外信息
2.属性值必须要用"引号"引起来

语法规则
所有xml元素都须有关闭标签(也就是闭合)
xml对大小写敏感
xml标签必须正确嵌套
xml文档必须有根元素
根元素就是*元素(没有父标签的元素 而且是唯一一个才行)
xml属性值必须要用"引号"引起来
某些特殊字符使用时要用 特殊方法 显示
(例:
使用& lt表示;小于号
使用& gt;表示大于号

如果有大量需要转义的字符
CDATA语法可以告诉xml解析器 “CDATA里面是纯文本 不需要xml语法解析”


<![CDATA[
	这里所有内容都会被解析为文本
	<<<>>> 都不会被误解
	<老师好>
]]>

xml解析技术介绍
xml类似html都是标记型文档 都可以使用w3c组织制定的dom技术来解析
标签都会解析为dom对象

早期JDK 提供了两种xml解析技术DOM和SAX

dom4j解析技术
需要去官网下载dom4jjar包

使用dom4j
一.将dom4j的jar包添加到类路径
1.创建一个Book类
对照xml的属性创建对应属性
自动生成getter setter方法
无参有参构造方法
重写toString()
2.将jar包添加到类路径
创建目录lib/dom4j.jar
将jar包添加到类路径(add as library)(选择Module Library 仅给自己使用)
3.添加成功后lib下的dom4j.jar就可以预览了(有个向下的箭头)


1.创建Dom4jTest.java
2.写dom4j的方法
@Test
public void test1(){}
//这里需要导入jUnit4的jar包并添加到类路径下

public class Dom4jTest{
	@Test
	public void dom4j(){
		//创建一个SAXReader输入流 去读取xml配置文件生成document对象 
		SAXReader saxreader=new SAXReader();
		//xml的路径传入read方法 读取xml配置文件生成document对象
		//可能存在异常 可以抛出 也可以catch
		//创建Document对象成功
		Document dom=saxreader.read("src/books.xml");
	}
	//读取books.xml生成Book类
	@Test
	public void test2(){
		//1.读取books.xml文件
		//SAXReader 一层一层的去获取他的子元素信息
		SAXReader saxreader=new SAXReader();
		//相关路径从模块名开始算
		Document dom=saxreader.read("src/books.xml");
		//2.通过document对象获取根元素
		Element rootElement=dom.getRootElement();
		//3.通过根元素获取book对象
		//element()和elements()都是通过标签名查找子元素(分别查找一个或多个)
		List<Element> books=rootElement.elements("book");
		//4.遍历处理每一个book标签转换为book类
		for(Element book:books){
			Element nameElement=book.element("name");
			//getText方法可以获取这个标签中的文本内容
			String nameText=nameElement.getText();
			//直接获取指定标签名的文本内容
			String priceText=book.elementText("price");
			String priceText=book.elementText("author");
			String snValue=book.attributeValue("sn");
			
			Book book=new Book
			(snValue,nameText,Double.ParseDouble(priceText),authorText);
			
		}
	}
}
上一篇:LeetCode0283-移动零


下一篇:自定mvc之新增,下架以及上架