a) xml, eXtensible Markup Language, 可拓展标记语言.是一种标记语言.
b) xml是一种非常灵活的语言, 没有固定的标签, 所有的标签都可以自定义.
c) 通常,xml被用于信息的记录和传递. 因此xml经常用于充当配置文件
a) 声明信息 ,用于描述XML的版本,编码方式.
版本始终是1.0 编码一般选utf-8
<?xml version="1.0" encoding="UTF-8"?>
b) 根元素 (一对标签)
根元素有且仅有一个
c) xml是大小写敏感的
d) 标签是成对的,而且要正确嵌套
e) 属性值要使用双引号
下面id就是属性,""里面是属性值
<?xml version="1.0" encoding="utf-8"?>
<a>
<aa id="101">
xxx
</aa>
</a>
f) 注释写法
<!-- 这里是注释-->
<?xml version="1.0" encoding="utf-8"?>
<books>
<book>
<name>
xml101
</name>
<author>
张三
</author>
<price>
50.5
</price>
</book>
<book>
<name>
xml102
</name>
<author>
李四
</author>
<price>
40.4
</price>
</book>
</books>
<!-- 这里是注释-->
可以直接用浏览器打开
还可以折叠
a) DTD , Document Type Definition,文档类型定义
b) DTD 用于约束xml的文档格式,保证xml是一个有效的xml.
c) DTD 可以分为两种,内部DTD,外部DTD.
假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:
<!DOCTYPE 根元素 [元素声明]>
元素声明语法 :
数量词
+
: 出现一次或多次
?
: 出现0次或一次
*
: 出现任意次
属性声明语法
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。
可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。
CDATA
CDATA 的意思是字符数据(character data)。
CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE scores[
<!ELEMENT scores (student*)>
<!ELEMENT student (name,course,score)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ELEMENT name (#PCDATA)>
]>
<scores>
<student id="1">
<name>
张三
</name>
<course>
数学
</course>
<score>
75
</score>
</student>
<student id="2">
<name>
李四
</name>
<course>
数学
</course>
<score>
88
</score>
</student>
</scores>
假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:
要创建一个单独的dtd文档 1.dtd
<?xml version="1.0" encoding="utf-8" ?>
<!ELEMENT scores (student*)>
<!ELEMENT student (name,course,score)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ELEMENT name (#PCDATA)>
然后引入
<?xml version="1.0" encoding="utf-8" ?>
<!-- 引入外部DTD文件-->
<!DOCTYPE scores SYSTEM "1.dtd">
<scores>
<student id="1">
<name>
张三
</name>
<course>
数学
</course>
<score>
75
</score>
</student>
<student id="2">
<name>
李四
</name>
<course>
数学
</course>
<score>
88
</score>
</student>
</scores>
实体是用于定义引用普通文本或特殊字符的快捷方式的变量。
实体引用是对实体的引用。
实体可在内部或外部进行声明。
在DTD中的实体类型,一般分为:内部实体和外部实体,细分又分为一般实体和参数实体。除外部参数实体引用以字符(%)开始外,其它实体都以字符(&)开始,以字符(;)结束。
一个内部实体声明
语法:
<!ENTITY 实体名称 "实体的值">
例子:
<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">
使用:
<author>&writer;©right;</author>
一个外部实体声明
语法:
<!ENTITY 实体名称 SYSTEM "URI/URL">
例子:
<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
使用:
<author>&writer;©right;</author>
- XML Schema是DTD的替代者
- 不仅可以定义XML文档的结构,还可以规范文档的内容
- XSD本身也是XML文档,
- XSD采用XML文档来定义语义约束,比DTD要复杂一些,但是功能强大的多。
对xml文件进行操作 , 包括创建,增删改查
官网提供的解析方式
基于XML树结构, 比较耗资源
民间的解析方式 , 基于事件的解析
消耗消耗小,适用数据量大的xml
开源 , 比DOM快
DOM forJAVA
解析方式用到了再学emmm
原文:https://www.cnblogs.com/l0nmar/p/13337996.html