xml
xml的编写 【重点】
xml的解析 【重点】
xml的约束 【了解】
注解 【重点】
xml
xml的概述
什么是xml
可扩展标记语言
可扩展:标签(元素)是可以任意自定义的
标记语言:是由标签(元素)组成的一门一样
xml的作用
1、存储数据(当做配置文件使用)
2、传输数据
xml的编写 【重点】
xml标签的语法
1、标签由一对尖括号和标签名组成
2、标签一般成对出现 [双标签/围堵标签]
<a>xxx</a>
3、标签也可以不成对出现,但是必须有结束标记 [单标签/自闭合标签]
<a/>
4、在开始标签处可以定义属性,属性一般是以键值对的形式出现的
属性名就是键,要和标签名使用空格隔开
属性值就是值,值必须使用引号(单双引都可以)引起来
比如:
<hello id='heima001'></hello>
id就是属性
5、标签必须正确的嵌套
<a><b></b></a> // 正确嵌套
<a><b></a></b> // 错误嵌套
6、标签名区分大小写
<hello></Hello> // 错误的
xml文档的语法
1、后缀名必须是.xml的
2、xml文档必须有文档声明,而且文档声明必须位于第一行第一列
<?xml version="1.0" encoding="utf-8" ?>
3、xml文档必须有一个根标签,而且有且只能有一个
根标签:最外层的标签,所有的标签都必须直接或者间接在根标签内部
子标签:嵌套在内部的标签
父标签:外部的标签
4、xml文档中可以使用注释
<!--注释内容-->
5、特殊字符需要使用实体引用替换
< < 小于 lt less than
> > 大于 gt great than
6、可以使用CDATA区
<![CDATA[内容]]>
CDATA区:其中的内容都不会被解析,会被原样展示
xml编写练习:
描述一个书店(bookstore标签),其中有三类(category属性)书
第一类书:java类型
标题(title标签):java基础入门
作者(author标签):传智播客
出版年份(year标签):2015
价格(price标签):59.9
第二类书:children类型
标题(title标签):哈利波特
作者(author标签):J K.罗琳
出版年份(year标签):2005
价格(price标签):29.9
第三类书:web类型
标题(title标签):学习xml
作者(author标签):罗伊
出版年份(year标签):2003
价格(price标签):39.9
xml的解析 【重点】
什么是xml的解析
将xml文档中存储的数据读取出来
在xml文档中数据存在于标签体内部和属性值中
解析就是读取标签体内部和属性值中的内容
DOM解析思想
文档对象模型
将文档的各个组成部分封装成不同的对象:
Document
Element
Attribute
Text
Node
解析工具:
选用DOM4J
xml解析的练习
需求:
解析这个xml文件,
将解析到的数据封装到学生对象中.
并将学生对象存储到ArrayList集合中
遍历集合
步骤:
1、解压压缩文件获取到jar包,将jar包导入到模块中
2、准备要解析的xml文档
3、编写标准类Student用于封装解析之后的数据
4、编写测试类进行解析操作
xml的约束 【了解】
约束的概述
什么是约束
用于对xml的文件的编写进行限制的文档
xml文档中主要是标签和属性组成,所以限制主要是针对标签和属性
约束的分类
DTD
Schema
DTD
约束的编写
约束的引入
引入本地dtd
<!DOCTYPE 根元素 SYSTEM "文件名">
xml文档内部引入dtd
<!DOCTYPE 根元素 [元素声明]>
引入网络中的dtd [常见]
<!DOCTYPE 根元素
PUBLIC "名称" "网络中的地址">
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
根据约束写xml文件
Schema
约束的编写
约束的引入
根据约束写xml文件
注解
注解的概述
什么是注解
以@符号开头的内容就是注解,比如:@Override
注解是代码级别的内容,是代码的一部分,用于对其他的代码进行说明,它可以使用在类上、方法上、变量上等
注解(Annotation)和注释(Comment)的区别
注解:用于对代码的说明,但是它是程序看的,它也是属于代码的一部分,会被编译器所识别,会被JVM所运行
注释:用于对代码进行解释说明的文字,用于给程序看方便阅读代码的,会被编译器所忽略,不是代码的一部分
注解的作用:
1、可以用于检测验证
2、当做配置使用,替代配置文件方式,简化代码
JDK提供注解的使用
@Override
@FunctionalInterface
@Deprecated
@SuppressWarnings
自定义注解
格式:
元注解
public @interface 注解名 {
属性;
}
属性
注解本质上是一个接口,继承了java.lang.Annotation接口
属性本质上是接口中的抽象方法
属性的格式:
public abstract 返回值类型 方法名() default 默认值;
格式解析:
public abstract:修饰符,默认的,如果要写出只能固定写成public abstract
方法名:属性名
():参数列表,参数列表只能为空
default 默认值:用于给属性赋予默认值
返回值类型:
只能是以下5种类型:
基本类型
String
Class
注解
枚举
和以上5种类型的一维数组类型
如果一个属性没有赋予默认值,则在使用注解的时候必须显式赋值,否则报错
元注解
什么是元注解
也是注解,是用于定义注解的时候修饰注解的,放在注解定义之上的
元注解
@Target:用于限制注解使用的位置
@Documented:限制生成的api文档中是否保留该注解
@Retention:注解保留的时期
SOURCE:源码(.java),源码中有该注解,但是编译之后的字节码文件中就没有该注解了
CLASS:字节码文件(.class),源码和字节码文件中都有该注解,但是对类加载到JVM内存中的时候就没有该注解了
RUNTIME:运行时(Class),源码、字节码文件和类加载到JVM内存中生成的Class对象中都有该注解
如果是通过反射来操作注解,那么该注解一定要设置为RUNTIME
@Inherited:设置该注解是否会被继承
自定义的时候不加元注解也不会报错,因为会有默认值