JavaSE进阶-XML&注解


    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; < 小于       lt  less than
                &gt; > 大于       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:设置该注解是否会被继承

                自定义的时候不加元注解也不会报错,因为会有默认值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值