本帖最后由 kuqi3712 于 2017-12-25 21:44 编辑
XML:
是用来描述数据的
HTML用来显示数据
XML的组成部分:
文档申明 <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
文档申明只能在第一行
元素: 开始标签和结束标签的元素名必须一致(子标签用来完善父标签的)
不包含标签体的标签<Student name="" age="" />
标签能嵌套使用但是不能交叉使用
只有一对根标签
严格区分大小写
只能以字母或下划线开头 abc _abc
不能以xml开头
名称字符之间不能有空格或控制符
名称字符之间不能使用冒号:
标签名可以重复
元素中的属性不允许重复
元素的属性
注释
<!--
-->
不能被解析
只能写到文档申明的上面
不能嵌套注释
如果在XML中要使用中文就必须使用包含中文的编码
CDATA: Character Data
<![CDATA[
内容
]]>
特殊字符 设置成普通文本
<AAA>
处理命令
必须以<?作为开头 以?>作为结尾
XML的约束:
为了规范XML的书写,可以规范标签的名称,顺序,次数,属性以及属性的值
DTD:文档类型定义
<!DOCTYPE 书架 SYSTEM "book.dtd" >
在DTD文档中使用<!ELEMENT 元素名 使用规则> 来申明一个约束
例如<!ELEMENT 书 (书+)>表示有一个书的根标签并且有多个书的子标签
标签体的规则
EMPTY 空
ANY 任意类型
A,B,C规定子标签的顺序
A|B表示AB任选其一
+至少要有一次
*可有可无 可以一次或多次
?可有可无 只能有一次
ATTLIST 可以申明 属性
<!ATTLIST 原素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
>
属性值类型:
CDATA 表示属性的取值为普通的文本字符
ENUMERATED(DTD没有):表示枚举,只能从枚举中任选其一
ID:表示属性的取值不能重复
设置说明:
#REQUIRED:表述该属性必须出现
#IMPLIED:表示可有可无
#FIXED:固定的 #FIXED"固定值"
直接值:表示属性的取值为该默认值
DTD定义属性实例:
<!ATTLIST 商品
类别 CDATA#REQUIRED
颜色 CDATA#IMPLIED
>
<商品 类别="服装" 颜色="黄色"/>
DTD示例2:
<!DOCTYPE 购物篮[
<!ELEMENT 购物篮(肉+)>
<!ELEMENT 肉 EMPTY>
<!ATTLIST 肉 品种(鸡肉|牛肉|猪肉)"鸡肉">(括号里面的是枚举)
]>
<购物篮>
<肉 品种="猪肉">
<肉 品种="牛肉">
<肉/>(没有给品种 是鸡肉)
</购物篮>
XML Schame(XSD 模式文档):
由标签和属性的约束文档(Schame可以看出类 xml可以看成对象)
XML的解析方式:
DOM:将整棵树一口气加载到内存当中,可以非常方便的操作任意标签和属性
当整棵树很大的时候会出现内存溢出的问题
SAX:Simple API for XML
节点 标签 属性 文本 甚至是换行都称之为节点
一个节点一个节点开始解析
先从根节点开始进行解析
如何使用java?
JAXP:sun公司提供的
Dom4j(Dom for java):开源组织提供的
Document
Element getRootElement()获取根元素对象(根标签)
Element
List elements() 获取所有的子元素
List elements (String name) 根据指定名称获取相应的所有的子元素
Element element(String name) 根据指定的元素名称来获取子元素的对象
String elementText(String name)根据指定的元素名称来获取子元素中的文本
String getText();获取当前元素对象的文本
String getName();获取当前元素标签名称
void setText(String text)设置当前对象的文本
String attributeValue(String name)根据指定的属性名称获取其对应的值
addAttribute(String name,String value);根据指定的属性名称添加或者修改其对应的值
addElement();添加元素
删除自己无法删 必须找上一级 element 用getParent()方法,再调用remove()方法
DocumentHelper
createElement();增加标签
Log4j(log for java):开源组织提供的
|
|