什么是XML
eXtensive Markup Language,可扩展标记语言
元语言,用来定义其它语言的语言
XML能干什么
作为数据载体:存放具有一定结构的数据。ep:天气预报,气象局将测量汇总到的各种信息用XML文档发布在网上,之后想要显示这些信息的公司就可以去调用这些XML文档
作为配置文件:增加程序的灵活性。在JavaEE中,可以避免硬编程。ep:数据库连接
<?xml version="1.0" encoding="UTF-8"?> <!-- 处理指令,指定了XML版本以及字符编码 -->
<courses> <!-- 开始标签/根元素 -->
<course> <!-- 子元素 -->
<!-- 信息,显示正文内容 -->
<course_name>Linux</course_name>
<teacher_name>Robin</teacher_name>
<time_duration>2 days</time_duration>
</course>
<course>
<course_name>Java</course_name>
<teacher_name>Robin</teacher_name>
<time_duration>22 days</time_duration>
</course>
</courses> <!-- 结束标签 -->
XML语法(良构的xml)
1、第一行写xml处理指令:<? ?>
standalone="yes/no"代表该文件是否独立
2、有且只能有一个根元素
3、元素的规则
3.1 开始、结束标签配对出现
3.2 开始标签中可以包含属性
3.3 可以出现空元素
<briup></briup> <==> <briup />
元素内可跟的内容:
a)子元素
<briup>
<name></name>
</briup>
b)文本内容
<briup>Test</briup>
c)空
<briup></briup> <briup/>
注意:空格、制表符、换行等都不是空
d)混合内容
<briup>
Test
<name></name>
</briup>
3.4 不能交叉嵌套
<a><b><c></a></b></c> //error
<a><b><c></c></b></a>
4、命名规则
Java命名规则:
- 以字母、_、$开始
- 后可跟字母、数字、_、$
- 大小写敏感
- 不能使用保留字
- 没有长度限制
Xml命名规则:
- 以字母、_开始
- 后可以跟字母、数字、-、.、_
- 大小写敏感
- 不能使用保留字
- 没有长度限制
注意:
- 命名尽量表达出其含义
- 名字有多个单词组成,可以使用驼峰标识法,或将多个单词用_隔开
<studentName><studentName>
<student_name></student_name>
5、属性规则
- key=value配对出现,属性,属性值
- 属性只能出现在开始标签中,同一开始标签中可以出现多个属性,但属性不能重名
- 属性必须要有值,而且值必须用双引号或单引号引起来
<?xml version="1.0" encoding="UTF-8"?>
<courses>
<course id="100">
<teacher_name>Robin</teacher_name>
<course_name>Unix</course_name>
<time_duration>3</time_duration>
<content>
<chapter>hello</chapter>
hello world!
</content>
</course>
<course id="101">
<course_name>Corejava</course_name>
<teacher_name>Robin</teacher_name>
<time_duration>15</time_duration>
<content />
</course>
</courses>
注释
<!-- 这是xml中的一个注释,可以是一行,也可以是多行 -->
<!--
多行注释
-->
PCDATA,CDATA,实体
PCDATA(Parsed Character Data)
可以被xml文档解析器解析的字符数据,但有些字符需要借助实体才可以被解析器解析,比如 <
<!-- 用实体 < 代替 < -->
<code>
if(a < b) {
System.out.pirntln("hello");
}
</code>
CDATA(Character Data)
不可以被xml文档解析器解析的字符数据,按字符内容原样输出。
格式:<![CDATA[需要原样输出的字符串]]>
<code>
<![CDATA[
if(a < b) {
System.out.println("hello");
}
]]>
</code>
实体的使用
格式:&实体名;
自定义实体
格式:
<!DOCTYPE courses[
<!ENTITY 实体名 实体内容>
]>
<!DOCTYPE courses[
<!ENTITY company "昆山杰普软件科技有限公司">
]>
有效的XML
满足XML的语法规则,还要满足DTD或XML Schema的限制
有效的XML一定是良构的XML,但良构的XML不一定是有效的XML
HTML和XML之间的区别
- HTML标签是预先定义的,而XML中的标签我们可以自行定义
- HTML主要关注文档内容的显示,而XML主要关注文档内容的结构、语义
- HTML语法检查不严格,而XML语法检查严格
- 都是标记语言,都是自SGML发展而来,都是W3C维护的国际标准