Java基础之XML

### BeanUtil操纵的是javaBean的属性!!!属性!!属性!!(注意属性不等于字段,字段是成员变量)
1. copyProperties()方法是用来拷贝javaBean的,这两个javaBean可以是不同类的对象,方法会给两个对象中的相同属性赋值,不同的属性不管


### BeanUtils工具的概述和使用
* JavaBean的概述
* 只要满足了以下三个条件的类就是JavaBean
* 必须由public修饰的
* 必须有无参数构造方法
* 必须为属性提供setter & getter方法


* 两个重要的概念
* 字段:就是成员变量名
* 属性:
* 通过setter或getter方法获得
* setName()-->去掉set-->Name()———>首字母小写-->name
* 一般情况下,属性名就是成员变量名。


* BeanUtils的概述
* 是Apache组织开发的一款产品
* 是一款方便操作JavaBean的工具类。


* BeanUtils工具可以对JavaBean进行哪些操作
* 可以对JavaBean的属性进行赋值和取值。
* 可以将一个JavaBean属性拷贝给另一个JavaBean对象中。
* 可以将一个Map集合的数据拷贝到一个JavaBean对象中。


* BeanUtils常用方法
* setProperty(Object obj,String name,Object value)
* 给对象obj的name属性赋值为value
* 如果属性不存在,则什么也不发生。

* getProperty(Object obj,String name)
* 获得指定对象obj的name 属性值
* 如果属性不存在,则抛出异常


* getProperty(Object obj,String name,String defaultValue)
* 获得指定对象obj的name 属性值
* 如果属性不存在,则返回默认值


* copyProperties(Object dest, Object orig)   
* 将对象orig的属性值拷贝到对象dest
* '后付钱' ==> 后面赋值前面
* 不同类创建的对象也可以进行拷贝,只能拷贝相同属性的值。
 
* populate(Object bean, Map<String,String[]> properties)   
* 将properties中的数据封装到bean对象中
* 如果属性类型是字符串,值是字符串数组时,则会将字符串数组的第一个元素取出赋值给属性。


* Map BeanUtils.describe(Object bean)
* 将对象bean转换map集合,会多一个class的键值对。


#### BeanUtil的注意事项
1. 如果有时间类型的变量,即Date类型的变量,复制时,需要导入beanUtil包下的日期转换器类
2. 创建日期转换器类DateConverter dateC = new DateConverter();
3. 设置日期转换格式:dateC.setPatterns(new String[]{"yyyy年MM月dd日","yyyy-MM-dd日"});
4. 注册日期转换器:ConvertUtils.register(dateC, Date.class);
5. 这样在复制bean时,才会按照我们制定的格式转换,不然出异常。
6. !!!!!!!!!!使用Date类时一定要注意导包,有两个Date类,不要导错了包。!!!!


### XML的概述
* 概述
* XML是一门语言,全称:eXtensible Markup Language 可扩展标记语言
* 用来描述数据结构,标记又叫标签
* 开始标签和结束标签,比如 <name> 开始标签   </name> 结束标签
* XML出身名门,有w3c组织制定,微软和Googel大力推荐使用的一种数据格式


* 特点
* 一个XML中只能有一个根标签
* 标签中可以有属性
* 开始标签和结束标签要成对出现。
* 标签名严格区分大小写,比如 <A> 或 <a> 是完全不同的标签




* 作用
* 可以当成一个小型数据库使用
* 作用框架的配置文件(Structs.xml,hibernate.cfg.xml)
* 用于不同平台之间进行数据交换。


* 存储联系人信息
<通讯录>
<联系人 id="1">
<Name>张三</name>
<电话>13434567</电话>
<邮箱>4567@qq.com</邮箱>
</联系人>
<联系人 id="2">
<姓名>张三</姓名>
<电话>13434567</电话>
<邮箱>4567@qq.com</邮箱>
</联系人>
<联系人>
<姓名>张三</姓名>
<电话>13434567</电话>
<邮箱>4567@qq.com</邮箱>
</联系人>
<联系人>
<姓名>张三</姓名>
<电话>13434567</电话>
<邮箱>4567@qq.com</邮箱>
</联系人>
</通讯录>


### XML语法概述
* XML语法有以下几部分组成
* 文档声明
* 标签(元素)
* 属性
* 注释
* 转义字符
* CDATA区
* 处理指令(几乎不用了)


* XML文件的后缀名:xml


### XML语法之文档声明
* 格式
* <?xml version="1.0" encoding="UTF-8"?>
最简单文档声明格式:<?xml version="1.0"?>
* 两个属性
* version:版本号,有两个选择1.0或1.1 推荐1.0
* encoding:编码方式,常用的编码方式:gbk和UTF-8


* 注意事项
* encoding属性是可选属性,version属性是必须要有的,不能省略
* version必须是第一个属性,encoding是第二个属性。
* 文档声明的语句必须处于XML文档的第0行第0列


### XML语法之标签(元素)
* 语法
* <标签名>标签内容</标签名>
* 比如 <name>jack</name>
* 分类
* 有主体标签:有内容的标签,比如 <name>jack</name>
* 无主体标签:没有内容的标签 比如 <br/>


* 标签名的命名规则
* 严格区分大小写
* 不能以数字开头,只能使用英文字母,中文,下划线等字符开头
* 不用使用:号作为标签名,因为:是命名空间的特殊符号。
* 特殊符号要进行转义
* 标签名不用使用空格分割


* 注意事项
* 标签可以嵌套标签,但必须合理嵌套,不能交叉嵌套。

### XML语法之属性
 * 语法
  * <标签名 属性名=属性值>标签内容</标签名>
  * <name id='9527'>jack</name>


 * 注意事项
  * 属性只能出现在开始标签中
  * 属性值必须使用引号引起来,可以单引号也可以双引号,但是不能单双混用
  * 一个标签中可以有多个属性,多个属性不能出现同名的情况。


### XML语法之注释
 * 语法
  * <!-- 注释内容 --> 


 * 注意事项
  * 注释不能嵌套
  * 注释不能出现在文档声明之前


### XML语法之转义字符
 * 为什么要转义
  * 有些字符在XML文档中是有特殊含义,如果想原样输出,则必须对该字符进行转义。


 * 语法
  * 以 & 开头,以 ; 结束


 * 常见的转义字符
  * &lt;  <  小于符号
  * &gt;  >   大于符号
  * &quot; "  双引号
  * &apos; ' 单引号
  * &amp;  & 


### XML语法之CDATA区
 * CDATA全称Character Data 字符数据
 * 语法
  * <![CDATA[
  // 字符数据
  ]]>


 * 作用
  * 能够保证数据不会被解析器解析,会原样输出。


### XML约束的概述
* XML约束的概念
* 用来约束XML文档中可以使用哪些标签,标签有哪些属性,属性有哪些取值。


* 约束作用
* 描述XML文档结构
* 让XML文档书写更加规范


* 约束的分类
* DTD约束
* DTD文件是一个文本文件
* 数据类型比较单一,语法简单
* 应用场景:structs.xml hibernate.cfg.xml
* 后缀名:dtd


* Schema约束
* Schema约束文件本身也是一个XML文件
* 数据类型比较丰富,语法复杂
* 应用场景:Spring配置文件,tomcat的web.xml
* 后缀名:xsd


### DTD约束-文档声明(应用形式)


* DTD约束分类
* 内部DTD:约束内容写在XML文档中(几乎不用了)
* 外部DTD:专门有一个文件来写约束(推荐使用)


* DTD文件的两种引用方式
* SYSTEM
* 格式:
* <!DOCTYPE 根元素 SYSTEM  "DTD文件的地址">
* 含义
* 该dtd约束文件是属于个人或某个组织的,不公开使用,使用范围比较窄。


* PUBLIC
* 格式:
* <!DOCTYPE 根元素 PUBLIC "DTD文件描述" "DTD文件的地址">
* 比如: <!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
 "http://struts.apache.org/dtds/struts-2.1.dtd">
  * 含义
  * 该dtd文件是公开使用的,使用范围比较广范。




### DTD约束之元素约束(标签)
* 元素约束的语法
* <!ELEMENT 元素名  元素类别或内容>


* 元素的类别有三种
* (#PCDATA):Parsed Character Data 可被解析的字符数据,文本内容
* EMPTY:空标签 比如<br /> 的约束: <!ELEMENT br EMPTY>
* ANY:任意内容都可以
<!ELEMENT name  ANY>
<name>范德萨发</name>


* 元素的内容修饰符号
* ?:0到1次
* *: 0到n次
* +: 1到n次
* ():给内容分组
* |:代表从多个元素中选择一个
* ,:代表元素要按顺序出现


* 回答每一行的含义
  * book (title,author,price) book标签下有三个子标签,必须按顺序出现。
  * book (title|author|price) book标签下有1个子标签,必须是三个任意一个
  * book (author+) book有1到n个author子标签
  * book (author*) book有0到n个author子标签
  * book (author?) book有0到1个author子标签
  * book (author)  book有1个author子标签


### DTD约束之属性约束
* 属性约束语法
*  <!ATTLIST 标签名 
属性名 属性类型  类型选项
属性名 属性类型  类型选项
属性名 属性类型  类型选项
......
属性名 属性类型  类型选项>


* 属性类型

属性类型 说明
CDATA 字符类型(Character Data)
   (enum1|enum2|enum3)   枚举类型,属性的取值从给定的几种中选择
  ID        属性值在整个XML文件中是唯一,而且命名不能以数字开头

* 类型选项


类型选项 选项的含义
#REQUIRED 必须的属性
#IMPLIED 可选的属性
#FIXED value 属性的值是固定的,只能取value
默认值     不显示给出属性时,则该属性的值为默认值


* 属性约束案例


```java 
<!ATTLIST 作者
      姓名 CDATA  #REQUIRED
      年龄 CDATA  #IMPLIED
      职务 CDATA  #FIXED "程序员"
      爱好 CDATA  "旅游" >
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值