XML概述:
- XML:EXtensible Markup Language(可扩展标记语言)
- XML文件的应用场景:
* 存储数据:一对多,多个键值对的映射关系。
* 用作配置文件:如pom.xml。
* 传输数据:使用xml文件传输数据。
* 充当小型数据库
- 标签的定义:
<a> </a>
<a> <b></b> </a>
- 名称的规则:
* 不能包含冒号和空格。
* 不能以xml、XML、Xml开头。
* 名称不能以数字或标点符号开始。
* xml代码区分大小写。
- 属性的定义:
<a id1="abc" id2="bac"></a>
- 属性名称和值之间使用 = 连接,属性值用引号""包起来。
- 注释:注释不能嵌套,并且不能放到第一行,第一行必须为文档声明。<?xml version="1.0" encoding="UTF-8"?>
- 特殊字符:(替换为实体引用,eg:文本中有<会被解析为新元素的开始)
特殊符号 | 预定义实体 | 特殊符号 | 预定义实体 |
---|
& | & | " | &qout; |
< | < | ’ | ' |
- CDATA区:
- 可以解决多个字符都需要转义的操作,if(a<b&&b<c&&c<d){},把这些语句放到CDATA区里面,就不会被转义了。
- 写法:
<![CDATA[内容]]>
- XML约束:
通过XMl约束,约束XML文档的格式规范,保证xml文档结构,元素与元素之间的关系,属性的取值是否符合要求,保证数据的合法性。
* DTD:以.dtd后缀结尾(Document Type Definition)
* Schema:以.xsd后缀结尾
- Schema约束:XML Schema描述xml文档的结构,是基于xml的DTD的替代品,DTD里有CDATA类型,但在schema里支持更多的数据类型。
* 引入xsd文件命名空间 xsi:schemaLocation:"http://www.bwh.cn/xmlstudent.xsd"
* 为每一个xsd约束声明一个前缀,作为标识xmlns=http://www.bwh.cn/xml
* XSD就是书写XML的格式模板,XML中引用的标签和书写内容要符合XSD文档中的要求格式
Dom4j技术介绍:
- dom4j解析xml的类库。
- 解析步骤:
- 创建一个SAXReader解析器:SAXReader reader = new SAXReader();
- 获取Document对象:Document doc = reader.read(file);
- 根据相关方法去处理Document对象。
3.常用方法简介: - 节点相关:
getRootElement();getName();getText();setText();addElement();parentElm.remove(childElm);
- dom4j里提供了两个方法,用来支持xpath API:
selectNodes("xpath表达式");
selectSingleNode("xpath表达式");
- 注意:虽然dom4j支持xpath,但在利用xpath时需要引用jaxen-xx-xx.jar,否则会报java.lang.NoClassDefFoundError:org/jaxen/JaxenException异常。
Xpath技术介绍:
- Xpath:XML Path Language(XMl路径语言)
- 用处:利用xpath主要解决元素定位问题。
- 为什么要写Xpath?
* 元素没有id,name,class等明显或唯一属性。
* 元素id是动态的。
* 元素定位工具抓取不到。
* 复制xpath不稳定:元素本身没有变化,其他元素修改导致该元素定位失效。
* 迅速在全文导航到相关元素。
- 语法规则:
表示符 | 含义 | 表示符 | 含义 |
---|
/ | 根节点 | // | 任意位置 |
* | 任意元素 | @,text() | 属性,文本 |
. | 当前节点 | … | 父级节点 |
- 格式:
//*[@属性='属性值']
//*[text()='文本值']
//*[starts-with(@id,'view')]
//*[starts-with(text(),'开发')]
//*[@type='password']/../../div[3]
//*[@class='mmaa'and @type='password']
//*[name()="aaa"and@ID='sss']
//*[contains(@属性,值)]
//*[contains(text(),值)]