6、dtd的快速入门
创建一个文件 后缀名 .dtd
步骤:
(1)看xml中有多少个元素,有几个元素,在dtd文件中写几个<!ELEMENT>
(2)判断元素是简单元素还是复杂元素
复杂元素:有子元素的元素
<!ELEMENT 元素名称 (子元素)>
简单元素:没有子元素
<!ELEMENT 元素名称 (#PCDATA)>
(#PCDATA):约束元素是字符串类型
(3)需要在xml文件中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
打开xml文件使用浏览器打开的,浏览器只负责校验语法,不负责校验约束
如果想要校验xml的约束,需要使用工具
打开开发工具
创建一个项目
创建一个xml文件和dtd文件
在xml中引入dtd后,只能出现所约束中的,多写的会提示出错
7、dtd的三种引入方式
(1)引入外部的dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
(2)使用内部的dtd文件
(3)使用外部的dtd文件(网络上的dtd文件)
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD文档的URL">
学到框架 struts2 使用配置文件 使用外部的dtd文件
8、使用dtd定义元素
语法:<!ELEMENT 元素名 约束>
简单元素:没有子元素
<!ELEMENT 元素名称 (#PCDATA)>
(#PCDATA):约束元素是字符串类型
EMPTY:元素为空
ANY:任意
复杂元素:有子元素的元素
<!ELEMENT 元素名称 (子元素)>
子元素只能出现一次
表示子元素出现的次数
+:表示一次或者多次
?:0次或者一次
*:0次、一次或者多次
子元素之间用逗号隔开
表示元素的出现顺序
子元素之间使用|隔开
表示元素只能出现其中的任意一个
<!ELEMENT person (name+|age?|sex*|school)>
9、使用dtd定义属性
语法:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
属性类型
CDATA:字符串
枚举:表示只能在一定的范围内出现值,但是只能每次出现其中的一个
(aa|bb|cc)
ID:值只能是字母和下划线开头
属性的约束
#REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED:表示一个固定值
直接值:不写属性,使用直接值
写了属性,使用设置那个值
10、实体的定义
语法:<!ENTITY 实体名称 “实体的值”>
使用实体 &实体名称;
注意:
定义实体需要写在内部的dtd里面
如果写在外部的dtd里面,在某些浏览器下,内容得不到
11、xml的解析简介(写java代码)
xml标记型文档
js使用dom解析标记型文档
根据html的层级结构,在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象
document对象、element对象、属性对象、文本对象、Node节点对象
xml的解析方式(技术):dom和sax
dom方式解析:
根据xml的层级结构,在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象
缺点:如果文件过大,造成内存溢出
优点:很方便实现增删改操作
sax方式解析:
采用事件驱动,边读边解析
从上到下,一行一行的解析,解析到一个对象,返回该对象名称
缺点:不能实现增删改操作
优点:如果文件过大,不会造成内存溢出,方便实现擦查询操作
解析xml的解析器有jaxp,dom4j(实际开发),jdom
18、jaxp的api的查看
jaxp是javase的一部分
jaxp解析器在jdk的javax.xml.parsers包里
四个类:分别是针对dom和sax解析器使用的类
dom:
DocumentBuilder:解析器类
抽象类,不能new
实例可以从DocumentBuilderFactory.newDocumentBuilder()方法获得
一个方法,可以解析xml parse(“xml路径”) 返回的是document真个文档
ducument是一个接口,父节点是Node。如果找不到方法可以去Node里面找
DocumentBuilderFactory:解析器工厂
抽象类,不能new
newInstance()获取DocumentBuilderFactory的实例
sax:
SAXParser:解析器类
SAXParserFactory:解析器工厂
19、使用jaxp实现查询操作
查询xml中所有的name元素的值
20、使用jaxp添加节点
在第一个p1末尾添加<sex>nv</sex>
21、使用jaxp修改节点
修改第一个p1下面的sex内容是nan
22、使用jaxp删除节点
删除sex节点
23、使用jaxp遍历节点
把xml中的所有元素名称打印出来
dtd约束
猜你喜欢
转载自blog.csdn.net/cameles/article/details/80305538
今日推荐
周排行