XML文档(一)

由于在现代开发过程中,不需要开发人员手动解析XML文档,因此本次课程的主要目的是了解xml文档以及,xml约束文档的内容

XML编程语言
  • 可扩展编程语言
  • 两个特点:
    1. 在编写命令上,以标签为单位
    2. 实现就固定好的指令
  • 历史:诞生于1996年,在2004年进行一次更新。语法版本号升级1.1,现在用的是1.0
  • xml文档的作用:最初xml文档是作为【网页】来使用的,后来被所有浏览器厂商抛弃,就因为可扩展的问题,不同的人写的可能有不同的用处,没办法解析;现在在Java程序中使用,使用xml文档来代替properities作为配置文件
XML语法
  1. HTML 是从XML演化出来的一种编程语言。二者是父子关系
  2. HTML绝大多数语法都来自XML
  3. 一个XML文档必须以一个根目录标签为开始,其他的标签都必须作为【根目录标签】的直接子标签或间接子标签
<school>
<student>
    <member name="zains"></member>
</student>
</school>

为什么会被Java捡起来呢?比如说要存放多个数据库的配置信息,这样就可以判断出哪个数据是在哪个数据库里的,所属关系非常清晰。
4. HTML对英文字母的大小写是不区分的,但是XML是区分的,必须保持一致。
5. 在HTML中属性内容可以用双引号“”包含,也可以不用;XML的属性内容必须在一对双引号或者单引号中

XML文档读取方式
  • SAX读取方式:根据开发人员需要,一次将当前文档中若干个满足需要的标签加载到内存中
    1. 优点:节省内存
    2. 缺点:如果需要读取大量标签信息的时候运行效率比较低,因为每次都读取一个标签,可读取较小的xml文档
  • DOM读取方式:一次性将所有xml文档内容加载到内存中
    1. 优点:读取大量标签信息的时候,此时由于是在内存中进行定位
    2. 缺点:浪费内存
  • 实际都使用DOM方式读取
XML约束文档
  1. XML文档约束文档的作用:
    设置可以在当前XML文档中声明的【标签类型名】
    设置可以在标签中出现的【属性名】
    设置标签之间父子关系和兄弟关系
  2. xml约束文档分类

(1) DTD约束文档【.dtd】:简单约束文档(也是一种xml文档)在这里插入图片描述
定义了哪些标签可以在当前文档中使用,定义了可以使用的属性,怎么绑定呢?

<!DOCTYPE name SYSTEM "name">

把这个放在需要这个约束的xml文档中即可。
如何去看约束?
<!ELEMENT>

  1. <!ELEMENT 标签类型名(括号里面显示的是可以在当前标签内部出现的子标签)>:标签类型名称,可以声明当前的xml文档中可以声明的标签名称
  2. <!ELEMENT 标签类型名 (子标签名+)>:当前子标签必须出现在父标签内部,并且可以出现多次
  3. <!ELEMENT 标签类型名 (子标签名?)>:表示当前的子标签可以出现在父标签内部也可以不出现/而且如果出现只能出现一次
  4. <!ELEMENT 标签类型名 (#PCDATA)>:表示当前标签没有子标签【一般在这种标签当中填充文字内容】
  5. <!ELEMENT 标签类型名 (子标签名*)>:表示当前的子标签可以出现在父标签内部也可以不出现/如果出现的话可以出现多次
  6. <!ELEMENT 标签类型名 (子标签名)>:表示这个子标签必须出现在父标签内部/且只能保存一次
  7. <!ELEMENT 标签类型名 ((子标签名|子标签名2))>:这两个子标签必须出现在父标签中,但是不能同时出现
  8. <!ELEMENT 标签类型名 (子标签名1,子标签名2)>:子标签1和子标签2的顺序必须保持声明的时候的顺序

<!ATTLIST>

<!ATTLIST 标签类型名 属性名>:声明可以在当前标签内部可以使用的属性名称

(2)SCHEMA约束文档【.xsd】:高级约束文档
在这里插入图片描述
以标签的形式来进行约束,最大的特点是支持前缀名,导入之前把xsd文件的前面注释部分直接copy到要约束的xml文件中即可。
⚠️在同一个文档中不能有两种xml约束文档

SCHEMA和DTD的区别
  1. dtd文档如果两个文档对同一个xml文件进行约束的时候如果其中有两个相同的名字的标签的话,会出现问题。
  2. 但是在SCHEMA文档中支持前缀名<one:body>. <two:body>,这样就可以进行区分
  3. 但是其实一个xml文档都是只有一个xml文档约束,而且大多数都用SCHEMA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值