1 XML入门
1.1 引入
HTML,超文本标记语言。
html语言语法是很松散的!
1)标签不区分大小写的!
2)标签可以不匹配的。
所以 由w3c组织,针对html的语法缺陷,去设计了另一门,叫xml语言。
html语言的标签是固定的。
1.2 XML语言
XML:, Extend Markup lanuage 可扩展标记语言。
HTML | XML | |
概念 | 超文本标记语言 | 可扩展标记语言 |
标记数量 | 是固定的 | 是不固定的,可扩展的 |
作用 | 负责网页的结构 | 1)描述带关系的数据结构(作为软件的配置文件) 2)装载数据(作为小型的“数据库”)。 |
HTML XML
概念 超文本标记语言 可扩展标记语言
标记数量 是固定的 是不固定的,可扩展的
作用 负责网页的结构 1)描述带关系的数据结构(作为软件的配置文件)
properties配置文件:键值对 name=eric password=123456
xml可以描述包含与被包含的关系。
<student>
<name></name>
</student>
<student>
<name></name>
</student>
配置使用场景:
1)框架(struts2 , hibernate,spring),xml作为框架的配置文件
2)tomcat服务器软件配置文件(web.xmlserver.xml)
2)装载数据(作为小型的“数据库”)。
2 XML作用
2.1 作为软件配置文件
PCweb服务器:学生管理系统 ->添加学生 -> name=张三,age=20->提交到后台程序->把数据存储到数据库中
两台通讯条件: IP地址和端口
java代码:根据ip和端口连接数据库服务器(ip改动会改变代码)
properties文件:ip=211.34.21.43
port=20
xml文件:
<host-list>
<hostid="main">
<ip>211.34.21.43</ip>
<port>20</port>
</host>
<hostid="backup">
<ip>211.34.21.44</ip>
<port>20</port>
</host>
</host-list>
PC数据库服务器1:oracle数据库 211.34.21.43 20
PC数据库服务器2:oracle数据库 211.34.21.44 20
2.2 作为小型数据库
教师管理系统 教师信息:姓名 工龄 邮箱地址
传输数据:
字符串: 张|三|20|zhangsan@qq.com|.......|.... (格式不是行业规范的,不通用)
xml格式:
<teacher-list>
<teacher>
<name></name>
<email></email>
<workage></workage>
....
</teacher>
<teacher>
<name></name>
<email></email>
<workage></workage>
....
</teacher>
<teacher-list> (xml是w3c组织的制定的标准)
json格式
获取字符串,截取字符串数据。
财务系统
发邮件给教师:
邮箱地址 姓名
方案1:财务系统中也存储了一套教师信息。数据维护成本比较高了!!!
方案2: 财务系统使用的教师数据从教师管理系统中发送过去的。
3 XML语法
3.1标签
<student>学生</student>
注意:
1)分带标签体的标签,也有空标签。
2)标签是区分大小写
3)标签一定要配对
4)标签中间不能含有空格
5)不能使用数字开头
6)如果没有指定名称空间的话,标签名中间不能含有冒号
7)在同一个xml文件中,有且仅有一个根标签
3.2属性
<student id="1"></student>
注意:
1)一个属性分为属性名和属性值。属性名和值之间使用=号分割。
2)属性值一定要使用单引号或者双引号包含,不能省略,也不能单双混用!
3)一个标签内可以包含多个属性,但是不能出现同名的属性
3.3注释
<!-- xml --->
3.4文档声明
<?xml version="1.0" encoding="码表"?>
version:xml的版本号
encoding:表示解析xml文件内容时使用的码表
xml文件的编码问题:
1)xml文件内容保存的编码(另存为-》选择编码保存)
2)解析xml文件内容的编码( <?xml version="1.0" encoding="utf-8"?> )
以上两个编码必须保存一致,才能避免中文乱码问题。
注意: 如果在ecplise开发工具上,编写xml文件,那么xml文件内容自动按照文档声明的encoding的编码保存,所以不会中文乱码问题.
3.5转义字符
和html的转义字符相同.
3.6CDATA块
把CDATA块中的内容全部原样输入
4 XML解析
4.1 xml解析方式
1)DOM解析:
2)SAX解析
4.2 DOM解析的工具
Sun官方jaxp工具
jdom工具
dom4j工具:三大框架读取xml文件的程序。(非官方的,第三方的)
dom for java
iphone4s iphone for steven
4.3 dom4j工具使用
1)到dom4j的官方下载 。dom4j-1.6.1.zip
2)导入dom4j的支持jar包、dom4j-1.6.1.jar核心包
总结:xml解析
dom解析方法: dom4j的工具
查:
标签: element("name")
elements("name")
elements();
getName()标签名称
getRootElement():根标签
属性: atrributeValue("name") 属性值
atrribute("name") 对象
atrributes() 属性对象列表
getName(): 属性名
getValue()属性值
文本:getText(); 当前标签的文本
elementText("name") 子标签的文本
增:
DocumentHelper.createDocument() 文档
addElement("name"); 标签
addAtribute("name","value" ) 属性
改: setValue() 修改属性值
addAttribute(”同名“)修改属性值
setText() 修改文本内容
删除: detach() 标签、属性
getParent().remove(标签/属性)