xml解析

xml (extensible markup language)
1.xml 是可扩展标记语言
2.xml是一种标记语言,类似于html
3.xml的设计宗旨是传输数据,而非显示数据
4.xml没有被预定义
5.使用约束的xml文档设计具有自我描述性
6.xml是w3c的推荐标准
xml格式
1.描述:
2.根元素
3.子元素
xml元素命名
1.区分大小写
2.字母开头,不能以数字开头
3.命名空间不能包含空格
注释
格式:
注意:不能嵌套
CDATA区 - 解析器不解析此内容
格式:
转义字符
& : &
< : <
> : >
" : "
' : '
空格 :  
引入css
格式:
xml约束
1.DTD
2.Schema

DTD约束
1.关联DTD - 只能引入一种
内部关联:格式:
外部关联:格式:
公共关联:格式:
2.语法-元素
格式:
? : 表示该元素可以出现,但是只能出现一次
* : 表示该元素允许出现任意多次,也可以零次
+ : 表示该元素最少出现一次,可以出现多次
() : 用来给元素分组
| : 表示列出的元素中选择一个
, : 表示元素必须按照指定的顺序出现
EMPTY : 如果一个元素的CONTENT 被声明为EMPTY,那么该元素不能包含任何子元素和文本,仅可以使用属性
ANY : 表示该元素中可以包含任何在DTD中定义的元素内容
#PCDATA : 表示该元素可以包含任何字符数据,但是不能在其中包含任何子元素
3.语法-属性
格式:
id ID #REQUIRED
city (北京|上海|广州) "上海" //这个在浏览器没有展示???
company CDATA #FIXED "sun" //这个在浏览器没有展示???
>
#REQUIRED 必须存在的属性
#IMPLIED 可以为空
#FIXED "value" 固定值
Defaultvalue 默认值
设置固定值,方便xml中被引用:设置: xm中引用:&bookVal; 这样还可以直接引用一个xml中所有内容
设置固定值,方便dtd中被使用:设置: dtd中引用:

    属性类型
    ID 唯一标识
    CDATA 字符数据
    IDREF 引用已有的唯一标识

Schema约束
1.本身就是一个xml文件,扩展名xsd扩展名xsd (xml schema document)
2.必须有一个根节点,叫Schema
3.是一套预定义的xml元素和属性创建的
4.在eclipse中新建一个xml schema文件即可。
5.新建后添加别名xs: 这个出处

关联schema - 重点
xmlns : 引用命名空间(xsd的targetNamespace)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
官方规定 - 用于实例化
xsi:schemaLocation="http://www.example.org/schematest schematest.xsd"
两个参数
1.引用schema名称
2.schema文件位置

schema语法
complexType 复合类型(复杂类型)
sequence 顺序出现 minOccurs最少几个,maxOccurs最大几个
choice 选择出现
all 没有顺序出现,必须全部都在

    simpleContent 简单类型
        extension 扩展
        restriction 约束(限制条件)

四种复杂类型
1.空元素
2.包含其它元素的元素
3.仅包含文本的元素
4.包含元素和文本的元素

案例:
1.仅含有属性的空元素
2.仅含有属性的空元素,属性必须写
optional 可选
required 必须
prohibited 禁用
2.仅含有属性的空元素,属性必须写,并且规定值的类型
3.必须含有属性的非空元素

schema自定义类型





需要用自己的命名空间引用:
tns是自己的命名空间

注意:
xmlns : 引用命名空间
xmlns:tns : 是对命名空间起一个叫 tns 的别名
xmlns:xsi :值是固定写法 http://www.w3.org/2001/XMLSchema-instance,每一个xml都要有
xsi:schemaLocation : 是命名空间的位置
targetNamespace : 命名空间

xml解析
1.DOM解析 ,全部加载到内存。
获得工厂实例 DocumentBuilderFactory
通过工厂获得解析器实例 DocumentBuilder
通过解析器 Document
解析xml 根元素getDocumentElement,子元素getElementsByTagName,属性getAttributes
2.SAX解析
获得工厂实例 SAXParserFactory
创建解析器 SAXParser
创建解析Handler DefaultHandler(startDocument,endDocument,startElement,endElement,characters)
解析xml 注意:文本值的赋值需要全局变量注意清空全局变量
从Handler中获得解析的集合 开放get方法
3.Dom4j解析
获得解析器 SAXReader
解析获得Document对象 Document
获得根元素 getRootElement()
获得所有子元素 elements()
遍历所有子元素 多层for循环遍历
4.Dom4j-xpath查询
5.Dom4j-curd

你可能感兴趣的:(xml解析)