Java入门第二阶段——XML+反射

XML概念
XML指可扩展标记语言(EXtensible Markup Language)
XML没有预定义标签,需要自行定义标签

XML的特点
XML数据以纯文本格式存储
实现不同应用程序之间的数据通信
实现不同平台间的数据通信
实现不同平台的数据共享
使用XML将不同的程序、不同的平台之间联系起来

XML作用
数据存储和数据传输

和HTML之间的差异
XML主要作用是数据存储和传输(传输)
HTML主要作用是用来显示数据(显示)
<?xml version="1.0"  encoding="UTF-8"?>
<books>
    <book id = "1001">
        <name> java开发实战强化</name>
        <author>张小三</author>
        <price>98.5</price>
    </book>
</books>
books 是根元素 一个XML只能有一个根元素
book是根元素的子元素 
id是book的属性
name等是book的元素

XML文件体系
1)XHTML   可扩展标识语言
2)WSDL  Web Service Description Language 网络服务描述语言,这种文档可描述某个Web service
3)WAP和WML手持设备的标记语言
4)RSS(广泛用于网上新闻频道):Really Simple Syndication简易信息聚合,使用RSS订阅能更快地获取
信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新
5)RDF和OWL:重要的语义网技术,语义网是为资产管理、企业整合及网络数据的共享和重要提供的一个
框架
6)SMIL同步多媒体集成语言,它是由万维网联盟规定的多媒体操纵语言,最新的SMIL版本是2001年8月
推出的SMIL2.0版本,它通过时序排列对声音、影响、文字以及图形文件进行顺利安排,然后将这些媒体
表现看起来是同步的

XML基本语法
1)有且只有一个根元素
2)XML文档声明必须放在文档第一行
3)所有标签必须成对出现
4)XML的标签严格区分大小写
5)XML必须正确嵌套
6)XML中的属性值必须加引号,单双引号都可以
7)XML中,一些特殊字符需要使用“实体”
8)XML中可以应用适当的注释

XML元素
 XML元素指的是开始标签到结束标签的部分,一个元素中可以包含
1)其他元素
2)文本
3)属性
4)以上的混合

XML命名规则
1)名称可以包含字母、数字以及其他字符
2)名称不能以数组或者标点符号开始
3)名称不能以字母xml开始
4)名称不能包含空格

DTD验证(验证XML是否有效)
DTD的局限性
1)不遵守XML语法
2)数据类型有限
3)不可扩展
4)不支持命名空间

Schema技术
是DTD的代替者,名称为 XML Schema ,用于描述XML文档结构,比DTD更强大,最主要的特征之一就
是XML Schema支持数据类型
1)用XML验证XML遵循XML语法
2)可以用能处理XML文档的工具处理
3)大大扩充了数据类型,而且还可以自定义数据类型
4)支持元素的继承
5)支持属性组

所有的Schema文档使用schema作为其根元素
http://www.w3.org/2001/XMLSchema:用于验证当前Schema文档的命名空间(用于验证Schema本身)
同时还规定了来自命名空间http://www.w3.org/2001/XMLSchema的元素和数据类型应该使用前缀xs:

DOM方式解析XML数据
在Java程序中读取XML文件的过程称为解析XML
解析XML文件的方式
1)DOM解析(Java官方提供)
2)SAX解析(Java官方提供)
3)JDOM解析(第三方提供)
4)DOM4J解析(第三方提供)

DOM解析XML步骤
1)创建一个DocumentBuilderFactory对象
2)创建一个DocumentBuilder对象
3)通过DocumentBuilder的parse()方法得到Document对象
4)通过getElementsByTagName()方法获取到节点的列表
5)通过for循环遍历每一个节点
6)得到每个节点的属性和属性值
7)得到每个节点的节点名和节点值

SAX方式解析XML数据
全称:Simple API for XML,是一种以事件驱动的XML API,SAX与DOM不同的是它边扫描边解析
自顶向下依次解析,由于边扫描边解析,所以它解析XML具有速度快,占用内存少的优点

SAX解析XML步骤
1)创建SAXParserFactory对象
2)创建SAXParser对象(解析器)
3)创建一个DefaultHandler的子类
4)调用parse方法

JDOM解析XML数据
一种解析XML的Java工具包,它基于树形结构,利用纯Java的技术对XML文档实现解析,所以只适用于
Java语言

JDOM解析XML步骤
1)创建一个SAXBuilder对象
2)调用build方法,得到Document对象(通过IO流)
3)获取根节点
4)获取根节点的直接子节点的集合
5)遍历集合

DOM4J方式解析XML数据(当今最为流行的)
DOM4J是一个Java的XML API,是JDOM的升级品,用来读写XML文件的

DOM4J解析XML的步骤
1)创建SAXReader对象
2)调用read方法
3)获取根元素
4)通过迭代器遍历直接节点

XPATH技术—快速获取节点
准备资源
1)DOM4J的jar包
2)Jaxen的jar包
3)Xpath中文文档


反射机制介绍——Class对象获取
反射机制是Java动态性之一,在程序运行时,可以改变程序的结构或变量的类型
举例:JavaScript
典型的动态语言Python  ruby  以及Javascript
C、C++、Java不是动态语言,但具有一定的动态性,可以称为“准动态语言”,具备类似动态语言的特性
反射机制的常见作用
1)动态的加载类、动态的获取类信息(属性、方法、构造器)
2)动态构造对象
3)动态调用类和对象的任意方法、构造器
4)动态调用和处理属性
5)获取泛型信息
6)处理注解

提高反射效率
反射机制对程序的运行在性能上有一定的影响,速度慢
如何提高反射的性能
1)通过setAccessible提高性能
a)setAccessible启用和禁用访问安全检查的开关,值为true,则指示反射的对象在使用时应该取消Java
语言访问检查,值为false则指示反射的对象应实施Java语言访问检查,并不是为true就能访问,为false就
不能访问
b)禁止安全检查,可以提高反射的运行速度

反射操作的泛型
Java新增的数据类型
为了通过反射操作这些类型以迎合实际开发需求
1)ParameterizedType:表示一种参数化的类型,比如Collection<String>,可以获取String信息
2)GenericArrayType:泛型数组类型
3)TypeVariable:各种类型变量的公共父接口
4)WildcardType:代表一种通配符类型表达式,比如?extends Number,?super Integer(Wildcard
是一个单词,就是通配符)

注解
1)不是程序本身,可以对程序作出解释。(这一点跟注释没什么区别)
2)可以被其他程序(比如:编译器等)读取。(注解信息处理流程,是注解和注释的重大区别,如果
没有注解信息处理流程,则注解毫无意义)

注解的格式
注解是以“@注释名”在代码中存在,还可以添加一些参数值,例如@SuppressWarnings(value="u
nchecked")

注解在哪里使用
1)可以附加在package,class,method,field等上面,相当于给它们添加了额外的辅助信息,我们可以
通过反射机制编程实现对这些元素的访问

内置的注解
1)@Override:标识方法是重写方法
2)@Deprecate:标识的方法不建议使用
3)@SuppressWarnings:用来抑制编译时的警告信息

自定义注解
使用@interface定义自定义注解时,自动继承了java.lang.annotation.Annotation接口
1)@interface用来声明一个注解
2)其中的每一个方法实际上是声明了一个配置参数
a)方法的名称就是参数的名称
b)返回值类型就是参数类型(返回值类型只能是基本类型、Class、String、enum)
c)可以通过deault来声明参数的默认值
d)如果只有一个成员,一般参数名为value
注意事项:注解元素必须要有值。我们定义注解元素时,经常使用空字符串,0作为默认值,也经常使用
负数(比如-1)表示不存在的含义

元注解
元注解的作用就是负责注解其他注解。在Java中定义了4个标准的meta-annotation类型,它们被用来提供
对其它annotation类型作说明
  这些类型和它们所支持的类在java.lang.annotation包中可以找到
@Target
用于描述注解的使用范围(即被描述的注解可以用在什么地方)
@Retention
表示需要在什么级别保存该注解信息,用于描述注解的生命周期
@Documented
@Inherited

反射读取注解信息
ORM(Object Relationship Mapping)
ORM:对象关系映射
写程序用Java写, 存数据用数据库存储
1)类与表结构对应
2)属性与字段对应
3)对象和记录对应
使用注解完成类和表结构的映射关系
功能描述
将Java中Student类使用第三方程序通过读取注解生成数据库中的表
实现步骤
1)编写Student类
2)编写注解
3)在类中使用注解
4)通过解析程序将注解读取出来(通过框架解析)
5)拼接SQL语句,使用JDBC到数据库中执行,创建表

 
        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值