JavaSE进阶-day16
1.XML文件
1.1 概述
概念: XML是一种可扩展的标记语言. 也就是说,XML是一种可以自己定义标签的标签语言. 他所有的标签全是由自己定义. 作用: xml作为配置文件,用来存储配置信息,其存储的信息更有层级感,更能表示复杂内容.
1.2 文档声明
格式: <?xml version="1.0" encoding="UTF-8"?> 解析: version :当前xml的版本,必须有,且必须是"1.0" encoding:当前xml的编码方式. 一般为"UTF-8" 注意: 1.任何xml文件都必须有文档声明 2.文档声明必须放在xml文件的第一行第一列.
1.3 语法规则
1.XML中的标签必须有开始,有结束. 2.XML中的标签必须正确嵌套. 3.XML标签中的属性值一定要用引号引起来(单双都可以) 4.XML中标签区分大小写 5.XML中有且仅有一个跟标签
1.4 特殊字符
直接书写: < 小于号 > 大于号 & &符号 ' 单引号 " 双引号 空格 CDATA区: <![CDATA[ 直接在这里书写任何内容,都是直接输出 ]]>
2.XML解析
2.1 解析方式
DOM解析:Document Object Model. 一次性将文档的所有元素都加载到内存中. 可以对整个文档进行"增删改查"操作. SAX解析:Simple Api for XML. 事件驱动的方式,一次加载并解析一行代码. 只能对文档进行"查询"工作
2.2 相关对象
Doucment: 代表整个xml文件(整个xml文档) Element: 代表每个标签 Attribute: 代表标签上的属性 Text: 代表的是标签中间的文本
2.3 解析步骤
① 导入jar包
dom4j-1.6.1.jar //当前解析使用的是"dom4J"解析工具
② 开始解析
public class TestDemo { public static void main(String[] args) throws Exception { //1.创建一个解析器 SAXReader saxReader = new SAXReader(); //2.告诉解析器,要解析的文件是谁,返回要解析的文档 Document document = saxReader.read(TestDemo.class.getClassLoader().getResourceAsStream("stus.xml")); //3.从文档中获取"跟标签" Element rootElement = document.getRootElement(); //4.注意,解析时,必须一层一层的解析 //4.1 获取"跟标签"下的"student"标签 //Element studentEl = rootElement.element("student"); //获取"跟标签"下第一个student标签 List<Element> students = rootElement.elements("student"); //获取"跟标签"下所有的student标签 Element studentEl = students.get(1); //获取集合中索引为1的那个student标签 //4.2 获取"Student标签"下的"name标签"中的内容 // 获取"Student标签"下的"name标签" Element nameEl = studentEl.element("name"); // 获取"name标签"中的内容 String nameText = nameEl.getText(); System.out.println(nameText); //4.3 获取"Student标签"下的"age标签"中的内容 // 获取"Student标签"下的"age标签" Element ageEl = studentEl.element("age"); // 获取"ageEl"中的内容 String ageText = ageEl.getText(); System.out.println(ageText); //4.4 获取"Student标签"中Id属性的值 // 获取id属性的值 String value =studentEl.attributeValue("id"); System.out.println(value); } }
③ 文件内容
<?xml version="1.0" encoding="UTF-8" ?> <students> <student id="1"> <name>张三</name> <age>23</age> <gender>男</gender> </student> <student id="2"> <name>李四</name> <age>24</age> <gender>女</gender> </student> </students>
3.XML约束(了解)
3.1 DTD约束-引入方式
引入本地DTD约束: <!DOCTYPE 跟标签 SYSTEM 'DTD文件路径'> 引入内部DTD约束: <!DOCTYPE 跟标签 [ DTD约束语法 ]> 引入网路DTD约束: <!DOCTYPE 跟标签 PUBLIC 'DTD文件名' 'DTD文件的URL'>
3.2 Schema约束-引入方式
<!--xml引入Schema约束--> <跟标签 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.itcast.cn/aaa" xsi:schemaLocation="http://www.itcast.cn/aaa student.xsd" > <!-- 引入其他约束详解: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 1.表示引入官网约束. 2.表示当前文件是一个被约束的文件(固定写法) 3.给"引入的官网约束"起了个别名叫做"xsi" xmlns="http://www.itcast.cn/aaa" 1.表示引入其他约束 2.被引入的约束的名字叫做"http://www.itcast.cn/aaa". 注意:"http://www.itcast.cn/aaa"仅仅是一个名字 3.该约束没有起别名,所以,是当前文件的默认约束 xsi:schemaLocation="http://www.itcast.cn/aaa student.xsd" 1.指定被引入的自定义约束的路径 2.格式为"自定义约束名 自定义约束位置" -->
4.注解
4.1 概述
概述: 注解和注释一样,都是对对代码进行解释说明的. 注解是给计算机进行解释说明,注释是程序员进行解释说明 常见: @Override: 告诉计算机,我这个方法是"重写的方法". @Deprecated: 告诉计算机,我这个方法"过时了" @SuppressWarnings(value = "all"): 告诉计算机,我知道我这里有警告,你不要管了.
4.2 注意事项(知道)
1.注解本身没有任何意义.注解的功能取决于代码赋予的含义. 2.注解在使用时,必须给"注解的属性赋值".格式: @注解名(属性名=属性值) 3.如果注解的属性有默认值,则对应的属性可以不赋值,但是如果没有没默认值,则使用时必须赋值. 4.如果注解的属性名字是value,则赋值时,value可以省略. @注解名(属性值) 5.如果注解的属性是数组,则赋值时,可以直接赋与多个值. @注解名(属性名={值1,值2...}) 5.如果注解的属性是数组,并且赋值时,只赋值一个值的话,{}可以省略.则赋值时,可以直接赋与多个值. @注解名(属性名=值)
4.3 元注解(了解)
概念:所谓的元注解,指的是,修饰自定义注解的注解 组成: @Retention: 表示,自定义注解可以什么时候用. RetentionPolicy.RUNTIME:表示在运行时仍然可以使用 @Target: 表示,自定义注解可以在哪个地方用. @Target(ElementType.METHOD):表示自定义注解只能在方法上用