XML 是什么
类似于,HTML,是一种标记语言。XML 的本意是(Extensible Markup Language)可扩展标记语言。标记语言不是一种程序语言,是用于描述数据的工具。XML的特点是,在描述事物属性的基础上,增加了层次信息。
XML 有什么用
- 可以用于传输数据。比如:
<items>
<item property="enable">
<name>tofu</name>
<color>white</color>
<weight>500g</weight>
<quantity>excellent</quantity>
<label>
<type>food</type>
<type2>vegetable</type2>
<type3>chill</type3>
<label>
</item>
<item property="disable">
<name>fish</name>
<color>300g</color>
<quantity>boiled</quantity>
</item>
</items>
- 配置文件
程序捏的配置,比如配置数据库SQL
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.a.b.XXMapper" >
<resultMap id="BaseResultMap" type="com.a.b.XXVO" >
<id column="XX" property="xx" jdbcType="VARCHAR" />
<result column="XX" property="xx" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
A,B,C,D
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
select
<include refid="Base_Column_List" />
from XX
where XX = XX
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
delete from XX
where XX= XX
</delete>
</mapper>
约定
- 第一行使用文档头
<?xml version="1.0" encoding="UTF-8" ?>
- 需要使用XML作为配置文件而非数据传输时,通常要配置文档类型
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- 最外层标签是根元素,根元素只有一个
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper>
</mapper>
- 要么包含子元素,要么包含文本,不要两个都包含,通常不会使用下述方式
<car>
blue
<height>2.2m</height>
</car>
- 尽量不使用属性(尤其是有单位的情况)
<car colur="blue" height="2.2m"></car>
不如:
<car>
<colur>blue</color>
<height unit="m">2.2</height>
</car>
- 标记冲突情况,通常使用CDATA解决,标记语言经常要用到:<>/-" 等符号,如果文本内容中有同样的符号,将会导致解析失败。那么就需要使用 <![CDATA[ 内容]]> 来抵消掉区域内的解析,比如
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
select
<include refid="Base_Column_List" />
from XX
<![CDATA[ where XX > XX]]>
</select>
解析器
DOM
Document Object Model,文档对象模型,可修改XML, 使用简单。但是不使用于大XML文件读取,内存会急速增加。
SAX
Simple API for XML XML的简单API,可对大型XML进行筛选性的读取一部分,需要自己写解析器,使用较复杂。使用SAX解析不能进行XML修改。