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

被折叠的 条评论
为什么被折叠?



