WEB11XML基础以及DTD和Schema约束

本文详细介绍了XML的基础语法,包括文档声明、元素、属性、转义字符和CDATA区的使用。深入探讨了DTD约束,包括内部DTD和外部DTD的定义方式,以及Schema约束作为DTD的替代者的优势。同时,讲解了XML解析方式和解析器的使用,如DOM和SAX模型,以及如何使用DOM4J进行XML文件的解析。

1 XML语法

  • XML文档声明
<?xml version="1.0" encoding="UTF-8" ?>

文档声明必须以<?xml开头,以 ?>结尾,而且文档声明还要从文档的第0行0列的位置开始,version指明xml的版本,一般选1.0,encoding指明文档的编码,默认是utf-8

  • element
<element></element>

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。所有 XML 元素都须有关闭标签,XML 必须正确地嵌套,XML 文档必须有根元素,XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。

  • 属性
    XML 的属性值须加引号,可以使用双引号,也可以使用单引号,如果属性值本身包含双引号,那么有必要使用单引号包围它,如:
<gangster name='George "Shotgun" Ziegler'>
  • 转义字符
    在xml中一些特殊的符号没法直接输入,必须要使用转义字符。
    在这里插入图片描述
  • CDATA区
<![CDATA[
	输入的内容
]]>

当大量的转义字符出现在xml文档中时,会使xml文档可读性降低,这时如果使用CDATA时,可以提高可读性,CDATA可以使其包含的内容不被xml解析器解析。

2 DTD约束

2.1

用来约束xml文档,规定文档中元素的名称、子元素的名称及顺序、元素的属性等。

  • 内部DTD
    这种方式写的约束只对当前xml文档有效,格式如下:
<!DOCTYPE 根元素 [元素声明]>

例如:

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>
!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型
!ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型
!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型
!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型
  • 外部DTD
    在这里插入图片描述
2.2 元素声明

在这里插入图片描述
在这里插入图片描述

2.2 属性声明
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
<!ATTLIST payment type CDATA "check">

在导入dtd约束文件的时候,dtd文件要和相应的xml文件在同一目录下。

3 Schema约束

Schema是新的XML文档约束,比DTD强大很多,是DTD的替代者,其本身也是XML文档,但Schema文档的扩展名为xsd,不是xml。

4xml解析方式和解析器

在这里插入图片描述
解析器
在这里插入图片描述
API的使用
如果使用dom4j,必须导入jar包。
在这里插入图片描述
在这里插入图片描述
还有一种方式可以省去上面这种繁琐的方式,就是在引入dom4j的jar包的同时,也引入jaxen-1.1-beta-6.jar就可以使用类似下面的代码来解析xml配置文件。

// 1.创建解析器
			SAXReader reader = new SAXReader();
			// 2.解析文档----bean.xml在src下
			String path = BeanFactory.class.getClassLoader().getResource("bean.xml").getPath();
			Document doc = reader.read(path);
			// 3.获得元素,参数就是xpath规则
			Element element = (Element) doc.selectSingleNode("//bean[@id='" + id + "']");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Master_Yoda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值