1. Properties

该文件以后缀.properties结尾,这种文件允许使用key=value的格式存储内容,多用于来做配置文件,Java中用Properties类来读取该配置文件,其他语言也有相应的类去读取properties文件,由于难以表达层次, 复杂的配置文件可以用xml或者yml做配置.用#做注释

2.XML

eXtendsible markup language 可扩展的标记语言,后缀为 .xml
标记语言:文本相关的其他信息(包括文本的结构和表示信息等)与原来的文本结合在一起以展示文档的结构等

简单声明, version : 解析这个xml的时候,使用什么版本的解析器解析
	<?xml version="1.0" ?>

	encoding : 解析xml中的文字的时候,使用什么编码来翻译
	<!-- 元素就是指的<xxxx> ,encoding 是指属性-->
	<?xml version="1.0" encoding="utf-8" ?>、

注意:此处指的是解码的,而编码的字符集是xml文件另存为时或者软件工程的IDE设置出来的,如果二者不相符合就会出现乱码

CDATA区:xml的文档结构中已经使用了许多字符。例如<等,如果要在元素或者属性之中使用,就要使用转义字符,但是当大量转义字符出现在一起的时候会降低文档的可读性,因此可以使用CDATA区

<des><![CDATA[<a href="http://www.baidu.com">baidu</a>]]></des>

xml解析(获取xml元素中的字符数据或者元素属性)
有很多种,但是常用的有两种。

  • DOM 具体解析方案 jaxp sun公司。 比较繁琐
  • SAX 具体解析方案 jdom dom4j 使用比较广泛
    注:dom4j里面支持Xpath的写法。 xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位到具体的某一个元素。

xml约束
那么怎么规定素只能出现一次,不能出现多次? 甚至是规定里面只能出现具体的元素名字。
在书写spring的配置文件时候,常常可以自己选择元素,与其中的字符数据和元素属性,这就是通过约束做到的

  1. DTD
<!--    文档类型  根标签名字 网络上的dtd   dtd的名称   dtd的路径
<!DOCTYPE stus PUBLIC "//UNKNOWN/" "unknown.dtd"> -->
<!-- 引入本地的DTD  : 根标签名字 引入本地的DTD  dtd的位置 -->
<!-- <!DOCTYPE stus SYSTEM "stus.dtd"> -->
  1. Schema
    其实就是一个xml , 使用xml的语法规则, xml解析器解析起来比较方便 , 是为了替代DTD 。
    但是Schema 约束文本内容比DTD的内容还要多。 所以目前也没有真正意义上的替代DTD
约束文档:
	<!-- xmlns  :  xml namespace : 名称空间 /  命名空间
	targetNamespace :  目标名称空间 。 下面定义的那些元素都与这个名称空间绑定上。 
	elementFormDefault : 元素的格式化情况。  -->
	<schema xmlns="http://www.w3.org/2001/XMLSchema" 
		targetNamespace="http://www.itheima.com/teacher" 
		elementFormDefault="qualified">
实例文档:
	<?xml version="1.0" encoding="UTF-8"?>
	<!-- xmlns:xsi : 这里必须是这样的写法,也就是这个值已经固定了。
	xmlns : 这里是名称空间,也固定了,写的是schema里面的顶部目标名称空间
	xsi:schemaLocation : 有两段: 前半段是名称空间,也是目标空间的值 , 后面是约束文档的路径。
	 -->

名称空间的作用

一个xml如果想指定它的约束规则, 假设使用的是DTD ,那么这个xml只能指定一个DTD , 不能指定多个DTD 。 但是如果一个xml的约束是定义在schema里面,并且是多个schema,那么是可以的。简单的说: 一个xml 可以引用多个schema约束。 但是只能引用一个DTD约束。

名称空间的作用就是在 写元素的时候,如果有两个schema都指定了某个元素的约束,可以指定该元素使用的是哪一套约束规则。 默认情况下 ,如果只有一套规则,那么都可以这么写

3.yaml

后缀为.yml或者.yaml都行,注释为#

properties 与 yml 切换在线 properties yml对比_Properties


与xml对比,简洁(xml配置中有大量的资源被浪费在开闭资源上)

properties 与 yml 切换在线 properties yml对比_配置文件_02


properties 与 yml 切换在线 properties yml对比_Properties_03


properties 与 yml 切换在线 properties yml对比_yml_04