1.1 XML简介
典型的XML文档是由XML文档首部和XML文档主体构成的。
XML文档首部:声明包含<? ?>标签之中。例如:
<?xml version="1.0" encoding="UTF-8" ?>
XML文档主体,文档中的数据是通过树形结构进行组织的,一个标签引出一个元素节点,元素开始标签中可以指定属性节点,也可以包含子元素和文本内容,也可以什么也没有而成为一个空元素。
1、一个格式正确的XML文档必须由一个且仅由一个顶节元素组成。将没有根元素的XML文档称为XML片段。
2、正确处理特殊字符。使用CDATA段:
<?xml versoin="1.0" encoding="UTF-8" ?>
<root>
<compare><![CDATA[ %$#<> ]]></compare>
</root>
1.2 Xpath语言
Xpath将xml的文档结构视为一个树形结构,元素、属性、文本、注释以及处理指令都是这个树形结构上的节点,对于xml文档中元素、属性、文本、注释以及处理指令的访问实际上是按顺序遍历这棵树,使用Xpath的路径表示法,可以定位到XML文档中的一个节点或者节点集合。
在Xpath中,可以使用相关标识来定位元素以及其属性,这些标识符关键字主要有:child、self、parent、descendant、attribute等。
child为默认标识符,self表示当前节点,parent表示上一级节点。
descendant表示当前子孙节点,attribute表示当前节点的属性。
绝对路径的Xpath表示
绝对路径是从根节点到目标节点所经历的路径。
1、元素节点的访问:
/child::Config/child::Department
可以简化:
/Config/Department
2、属性节点的访问
/child::Config/child::Department/attribute::id
可以简化:
/Config/Department/@id
3、文本节点访问
可以直接使用“//”来表示,例如“.//”表示当前路径下的文本内容。
4、子孙节点的访问
可以通过元素节点,但是离根元素太长,可以使用子孙节点表示:
/child::class/descendant::Name
可以简化:
/class//Name
5、任意节点的访问
/child::Config/child::Department/child::*
可以简写:
/Config/Department/*
相对路径的Xpath表示:
parent::Director/@id 简写 ../@id
self::Director/Name 简写 ./Name
1.3 Xpath的元素定位条件
在xml中,也可以根据筛选条件返回指定节点集
1、根据属性值筛选节点集
可以使用下面的表示来定位class元素下所有的Director子元素:
/class/Director
但是需要定位具有属性id的Director时:
/class/Director[@id]
当需要具体确定属性数值时:
/class/Director[@id='1001']
2、根据或表达式筛选节点集
当需要对多个具有不同名称节点进行处理,可以使用|表达式,例如需要定位Director下的Name或者Age,二者任意一个度可以:
/class/Director/Name|Age