XML与反射
XML
1、什么是XML
1)Extensible Markup Language,
可扩展的标记语言。
用于定义文档,使其具有结构化的特征。
初衷是用于进行数据传输,目前也常用于做
配置文件。
2)背景
–HTML,超文本标记语言,由万维网之父
博纳斯.李创造,具有固定格式的文本语言。
–基于HTML的思想,扩展设计出XML,用户
可以自己定义XML文件的格式,具有很高的
灵活性。
–根据XML设计理念,重新的定义了HTML,
即XHTML。
2、XML的基本语法
1)XML由元素构成,元素是一对标记及其内容的
组合,由标记开始,由标记结束。
如:<result>/WEB-INF/find.jsp</result>
2)有且只有一个根元素
如:<struts></struts>
3)元素可以为空,称之为空元素
如:<br/>
4)元素可以有属性,属性值由””括起来
如:<result name=”success”>
5)元素可以嵌套
如:
<action>
<result>
<param></param>
</result>
</action>
6)大小写敏感
7)实体引用
< <
> >
& &
‘ '
” "
8)CDATA段
<![CDATA[不希望被XML解析的内容]]>
*3、XML的解析
1)SAX
Simple API for XML,是以流的形式解析XML,
边读取边解析,执行效率高,占用内存少。
目前常用的XML解析工具往往底层是用SAX实现。
2)DOM
Document Object Model,是将XML数据读取到
内存中,生成一棵完整的树,容易操作树结构的
每一级数据,但是占用内存高,效率低。
3)*DOM4J/JDOM
a、写XML:Obj->xml
–Obj->Document->xml
–使用XMLWriter将Document生成xml文件
b、读XML:xml->Obj
–xml->Document->Obj
–使用SAXReader将xml读取成Document
–Document的每一级元素对象为Element
c、对a进行扩展,将一组Emp数据写入到一个
XML文件中。
<emps>
<emp></emp>
<emp></emp>
<emps>
d、将生成的emps.xml读取,写入到List<Emp>中。
e、读取privileges.xml
f、用xml定义数据库连接参数,然后读取该数据,
4、XML的定义
使用通用的语法,来描述XML的结构及含义,这个叫
做XML的定义。
1)DTD
–采用一种特定的语法,来描述XML
–这种语法相对Scheme更难,并且不通用
–DTD出现的早,因此还广为使用
2)Schema
–w3c最新推出的标准,新一代的XML定义语法
–此种定义的语法就是XML的语法
XML定义参考:
http://www.w3school.com.cn/schema/index.asp
1)Extensible Markup Language,
可扩展的标记语言。
用于定义文档,使其具有结构化的特征。
初衷是用于进行数据传输,目前也常用于做
配置文件。
2)背景
–HTML,超文本标记语言,由万维网之父
博纳斯.李创造,具有固定格式的文本语言。
–基于HTML的思想,扩展设计出XML,用户
可以自己定义XML文件的格式,具有很高的
灵活性。
–根据XML设计理念,重新的定义了HTML,
即XHTML。
2、XML的基本语法
1)XML由元素构成,元素是一对标记及其内容的
组合,由标记开始,由标记结束。
如:<result>/WEB-INF/find.jsp</result>
2)有且只有一个根元素
如:<struts></struts>
3)元素可以为空,称之为空元素
如:<br/>
4)元素可以有属性,属性值由””括起来
如:<result name=”success”>
5)元素可以嵌套
如:
<action>
<result>
<param></param>
</result>
</action>
6)大小写敏感
7)实体引用
< <
> >
& &
‘ '
” "
8)CDATA段
<![CDATA[不希望被XML解析的内容]]>
*3、XML的解析
1)SAX
Simple API for XML,是以流的形式解析XML,
边读取边解析,执行效率高,占用内存少。
目前常用的XML解析工具往往底层是用SAX实现。
2)DOM
Document Object Model,是将XML数据读取到
内存中,生成一棵完整的树,容易操作树结构的
每一级数据,但是占用内存高,效率低。
3)*DOM4J/JDOM
a、写XML:Obj->xml
–Obj->Document->xml
–使用XMLWriter将Document生成xml文件
b、读XML:xml->Obj
–xml->Document->Obj
–使用SAXReader将xml读取成Document
–Document的每一级元素对象为Element
c、对a进行扩展,将一组Emp数据写入到一个
XML文件中。
<emps>
<emp></emp>
<emp></emp>
<emps>
d、将生成的emps.xml读取,写入到List<Emp>中。
e、读取privileges.xml
f、用xml定义数据库连接参数,然后读取该数据,
4、XML的定义
使用通用的语法,来描述XML的结构及含义,这个叫
做XML的定义。
1)DTD
–采用一种特定的语法,来描述XML
–这种语法相对Scheme更难,并且不通用
–DTD出现的早,因此还广为使用
2)Schema
–w3c最新推出的标准,新一代的XML定义语法
–此种定义的语法就是XML的语法
XML定义参考:
http://www.w3school.com.cn/schema/index.asp
5、XPath
1)表达式语言,允许我们通过表达式来访问
Document对象。
2)基本语法
–例如:/emps/emp[]
–以/来区别每一级元素,并且以/开头
–从根元素开始写起
–可以给元素追加条件,条件以[]括起来
–使用索引作为条件,如[1],注意这里下标从
1开始
–使用属性作为条件,如[@type=’simple’],
注意属性名前要加@
–使用下级元素作为条件,如[id=1]
1)表达式语言,允许我们通过表达式来访问
Document对象。
2)基本语法
–例如:/emps/emp[]
–以/来区别每一级元素,并且以/开头
–从根元素开始写起
–可以给元素追加条件,条件以[]括起来
–使用索引作为条件,如[1],注意这里下标从
1开始
–使用属性作为条件,如[@type=’simple’],
注意属性名前要加@
–使用下级元素作为条件,如[id=1]
反射
一、Class类型
1.创建对象的方式:class属性,对象.getClass()方法
2.封装了类型的信息的一种特殊类型
3.动态加载类信息Class.forName(“java.lang.String”);
4.NET,C#语言中Assembly与java中的Class等价
二、什么是反射
1.反射:运行时动态获取类的内部信息的一种方式
2.java语言的一种特性,c,c++语言就不具备这种特性
3.运行时自己查看自己信息的方式较自审、
4.典型应用:IDE的提示,javabean的拷贝,简单工厂
三、简单工厂的使用
1.编写配置文件
2.定义接口
3.编写实现类
4.编写简单工厂
5.编写测试类
四、Field类型:用于封装描述了类里面的字段信息的一种类型
1.获取所有属性 getDeclaredFields()
2.获取指定属性getDeclaredField(“fieldName”)
3.获取属性的值 field.get(具体的对象引用);
4.为属性赋值 field.set(对象,值);
5.Modifier用于存储等级信息的类型
Modifier.toString(f.getModifiers())
五、Method类型:用于封装描述了类内方法信息的一种类型
1.获取所有方法对象 getDeclaredMethods()
2.获取某一个方法对象getDeclaredMethod(“name”,paraType);
3.调用方法 method.invoke(obj,values….);
4.如果有返回值接收invoke方法的返回的object即可
5.获取方法的参数类型getParameterTypes();
六、JavaBean拷贝
1.什么是javabean:一种java类,重用的组件,符合
一定设计规范的
2.符合的规范如下:
公开且完整的类
所有属性需要隐藏
提供公共的可访问私有属性的途径(getXXX,setXX)
布尔类型的属性命名时把get/set换成is
一定要提供一个无参的构造器
3.javabean拷贝的意义
在系统分层时,能够保证不同层之间传递对象的方便性
1.创建对象的方式:class属性,对象.getClass()方法
2.封装了类型的信息的一种特殊类型
3.动态加载类信息Class.forName(“java.lang.String”);
4.NET,C#语言中Assembly与java中的Class等价
二、什么是反射
1.反射:运行时动态获取类的内部信息的一种方式
2.java语言的一种特性,c,c++语言就不具备这种特性
3.运行时自己查看自己信息的方式较自审、
4.典型应用:IDE的提示,javabean的拷贝,简单工厂
三、简单工厂的使用
1.编写配置文件
2.定义接口
3.编写实现类
4.编写简单工厂
5.编写测试类
四、Field类型:用于封装描述了类里面的字段信息的一种类型
1.获取所有属性 getDeclaredFields()
2.获取指定属性getDeclaredField(“fieldName”)
3.获取属性的值 field.get(具体的对象引用);
4.为属性赋值 field.set(对象,值);
5.Modifier用于存储等级信息的类型
Modifier.toString(f.getModifiers())
五、Method类型:用于封装描述了类内方法信息的一种类型
1.获取所有方法对象 getDeclaredMethods()
2.获取某一个方法对象getDeclaredMethod(“name”,paraType);
3.调用方法 method.invoke(obj,values….);
4.如果有返回值接收invoke方法的返回的object即可
5.获取方法的参数类型getParameterTypes();
六、JavaBean拷贝
1.什么是javabean:一种java类,重用的组件,符合
一定设计规范的
2.符合的规范如下:
公开且完整的类
所有属性需要隐藏
提供公共的可访问私有属性的途径(getXXX,setXX)
布尔类型的属性命名时把get/set换成is
一定要提供一个无参的构造器
3.javabean拷贝的意义
在系统分层时,能够保证不同层之间传递对象的方便性
版权声明:本文为cholar原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。