xml、dtd、SAX解析、DOM解析、DOM4J解析学习

四、xml语法规则
作用:规范该文件是否是一个良构xml
1、第一行必须写<?xml version="1.0" encoding="UTF-8"?>
2、有且只有一个根元素
3、元素标签的使用规则
4、元素嵌套规则
5、元素名和属性名的命名规则 字母和_开头
6、属性使用规则
1)属性的作用:属性描述元素增加元素信息
2)属性格式:属性名=“属性值”
3)属性必须放在元素的开始标签中
4)元素可以有多个属性,并且多个属性用空格隔开属性名唯一
5)属性值必须使用单引号或者双引号引起来
五、注释

六:PCDATA、CDATA、实体
1、PCDATA 可以被xml文档解析器解析器解析的,默认的内容是PCDATA
xml文档解析器:可以解析xml文档的。
有些字符如果要解析,需要借助实体
2、CDATA 不可以被xml文档解析器解析的 按照字符串原样输出
3、实体 替换一些字符或者东西

xml约束
    在XML文档中 可以编写一个文档约束一个xml文档
    书写规范,这称之为xml约束

    需要xml约束的原因
    xml由于是扩展的标记语言,所有xml文件中的编写太过自由很多情况写并不适用

常用的约束技术
    xml DTD 
        DTD文件的后缀名为 .dtd
        DTD文件有自己的语法规范
    XML Schema
        Schema文件的后缀名为.xsd
        Schema文件符合xml语法规范

DTD文档类型定义Document Type Definition
一、概念
DTD是xml文件中的属性,元素和其他杂项在文档中使用规则的声明
二、作用
可以利用DTD中声明的规则验证一个xml文档是否有效
一个有效的xml文档,是一个良构的xml文档
一个良构的xml文档,不一定是有效的xml文档
三、DTD的分类
1、外部dtd
dtd和xml不在同一个文件中
2、内部dtd
dtd和xml在同一个文件中
3、混合dtd
既有外部dtd 又有内部dtd
四、DTD所定义的内容
a)元素可能出现还是必须出现
b)元素出现的频率
c)元素如何嵌套
d)属性是允许出现,还是必须出现,以及属性的默认值
五、声明元素的使用规则
语法:<!ELEMENT 元素名 内容模式>
1)EMPTY:声明元素内容为空
2)ANY 申明元素内容为任意
3)(#PDATA)指定该元素是字符元素
4)ELEMENT(元素嵌套):声明元素内容仅仅是子元素
控制元素出现的顺序和频率
,表示元素必须顺序出现
|表示多个元素中选一个
+表示出现一次或者多次
*表示出现0次或多次
?表示出现0次或1次
5)Mixed声明元素内容为混合类型
六、声明元素属性的使用规则
语法<!ATTLIST 元素名 属性名 属性类型 属性默认值>

属性类型:
1、#REQUIRED 声明的属性必须出现在开始标记中
2、#IMPLIED 声明的属性出现时可选的
3、attribute-value声明的属性出现可选 若不出现则采用指定的默认值
4、#FIXED value属性的出现可选 但是不管是否出现都会采用后面的默认值

浏览器只验证是否良构,不验证是否有效

七、引入DTD 语法:
内部DTD
引入外部DTD:
SYSTEM 引用本地dtdd
PUBLIC 引用网络上的dtd

JAXP接口包含了三个包
1、org.w3c.dom
w3c推荐使用于xml标准规划文档对象的模型接口
2、org.xml.sax
用于对xml进行语法分析的事件驱动的xml简单api
3、javax.xml.parsers
解析器工厂工具,程序员获得并配置特殊语法分析器

使用sax解析xml文档
    sax解析特点:基于事件处理机制的解析
        1、边读边解析
        2、只能读取,不能修改
        3、不能回读,如果遇到未处理的事件,要重新读取
        4、轻量级速度快
        5、适合解析大文件
        优点,适合解析大文件 对内存要求不高
        轻量级的解析方式效率更高
        缺点:不能随机解析
            不能修改xml文件,只能进行查询

SAX解析 org.xml.sax
SAX编程步骤
1、创建sax解析器工厂类
2、创建sax解析器
3、定义事件处理器
4、开始解析xml

SAXParseFactory factory = SAXFactory.newInstance();
SAXParase parser = factory.newParse();
parser.parse();

Dom解析 文档对象模型

节点类型 Document 
         Element
         Att
         Text

Dom–Document Object Model文档式数据分析
SAX–Simple API for xml 流程式数据分析

sax基于流的解析方式,边读边解析
优点:解析速度快 适合解析大文件 对内存要求不高
缺点:不能随机读取 不能修改xml文件 只能读取xml文件

dom基于文档的一种解析方式将整个文档加载到内存中形成
完整的tree状结构 然后进行分析
缺点:可以随机读取,可以修改文件,可以创建xml文件
优点:消耗内存,适合解析小型文件,对内存要求高

sax
startDocument();开始解析文档
startElement();开始解析元素
endDocument()结束解析文档
endElement() 结束解析元素
character()遇到元素开始调用

dom
DocumentBuilderFactory()建立解析工厂
DocumentBuilder()建立解析器
File创建文件
parse(f)引入解析文件
NodeList getElementsByTagName获取节点名称

nodeName属性含有某个节点的名称
元素节点的nodeName是便签名称
属性节点的nodeName是属性名称
文本节点的nodeName是#text

nodeValue
对于文本节点nodeValue属性包含文本
对于属性节点 nodeValue属性包含属性值
nodevalue属性对于属性节点是不可用的

nodeType
nodeType属性可返回节点的类型
最重要的节点类型是
元素类型—》节点类型
元素element–》1
属性attr—–2
文本——–3

dom4j
File创建文件
SAXReader建立解析器
Document doc = reader.read(f)//引入文件
Element e = doc.getRootElement()//获得根节点
for(Object o:e){}遍历节点
if(“name”.equals(e.getNAme))//判断 获得名字的name节点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值