- Xml
可扩展标记语言 Extensible Markup Language 可以用简单标记的描述数据。 |
- XML优势和作用
优势: 跨平台、可扩展性、可读性、简单、内容和形式分离。 作用: 配置文件、存储数据、数据交换 |
- XML文件组成
1.1 xml 头信息:声明版本和编码
<?xml version="1.0" encoding="UTF-8"?> |
1.2 xml 标签元素
<标签名 属性名=”值”> 内容 </标签名> xml标签名可以自定义 |
- 格式良好xml遵循的规则
1. Xml声明必须放在第一行。 2.根元素标签有且只能有一个。 3.标签必须成对出现。 4.严格区分大小写。 5.属性值必须用””引起来 6.标签必须正确嵌套 |
编写一个存储学生信息的students.xml
<?xml version="1.0" encoding="UTF-8" ?> <students> <student sno="1001"> <name>小博</name> <age>18</age> <sex>男</sex> </student> <student sno="1002"> <name>马总</name> <age>28</age> <sex>女</sex> </student> </students> |
注意:students.xml只是一个格式良好xml,但不是一个有效xml.
有效:xml只能存放student有关的一些标签。
- 有效xml文件
1. 格式良好 2. 使用DTD 或 XSD 添加语义约束。 |
- DTD 文档类型定义
作用:给xml添加约束,保证xml格式正确性。
1. 内部DTD语法
<!DOCTYPE 根元素[ //元素中包含子元素 +:1~n ?:0~1 *:0~n <!ELEMENT 元素(子元素+?*,子元素...)> //元素中包含属性 ,CDATA:字符串类型 #REQUIRED:必须的 <!ATTLIST 元素 属性名 CDATA #REQUIRED> //元素中包含内容 <!ELEMENT 元素 (#PCDATA)> ]> |
2. 外部DTD
1. 创建dtd文件,编写约束
//元素中包含子元素 <!ELEMENT 元素(子元素+?*,子元素...)> //元素中包含属性 ,CDATA:字符串类型 #REQUIRED:必须的 <!ATTLIST 元素 属性名 CDATA #REQUIRED> //元素中包含内容 <!ELEMENT 元素 (#PCDATA)> |
2. DTD文件引入到xml中
<!DOCTYPE 根元素 SYSTEM ‘xxx.DTD’> |
- XML解析
解析技术 特点 前两种属于基础方法,是官方提供的平台无关的解析方式 后两种属于扩展方法,是在基础方法上扩展出来的,只适用Java平台
|
- DOM4J方式解析XML文件
1. 引入dom4j.jar包
dom4j-1.6.1.jar |
2. 创建解析器对象SaxReader
SAXReader sr=new SAXReader(); |
3. 读取xml文件,解析成DOM树
Document doc=sr.read("students.xml"); |
4. 获取根元素
Element root=doc.getRootElement(); |
5. 元素常用的方法
方法名 | 描述 |
getName() | 获取元素的名称 |
elements() | 获取所有的子元素 |
element(String name) | 获取指定的子元素 |
attributeValue(String name) | 获取元素指定的属性值 |
elementText(String name) | 获取子元素的文本值 |
addElement() | 添加子元素 |
addAttribute() | 添加属性 |
addText() | 添加文本 |
- 修改xml文件,重新Document对象写到xml中
OutputFormat format=OutputFormat.createPrettyPrint(); |