XML
xml 严格区分大小写
html旨在显示数据,而XML旨在传输数据 ,常被用作当配置文件
XML概念
XML为可扩展标记语言全称为Extensible Markup Language。
XML语法上和HTML比较相似,比如都有类似这样的符号:字符,作用上也都能用来传输与显示数据。
W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用。
我们现在实际项目开发中所使用的都是1.0版本,1.1版本不予考虑。
xml语法
(1)创建普通文本文件,后缀名为xml
(2)声明
语法:
<?xml version="1.0" encoding="UTF-8"?>
解析:
a、文档声明必须以<?xml开头,必须以?>结尾
b、文档声明必须在文档中的0行0列
c、文档声明的3个属性
versioin属性:指定XML文档版本.必须属性,因为我们 不会选择1.1,只会选择1.0;
encoding属性:指定当前文档的编码。可选属性,默认 值是utf-8;
(3)元素
语法:
<servlet></servlet>
解析
a、元素是XML文档中最重要的组成部分,
b、普通元素的结构开始标签、元素体、结束标签组成。例如: <hello>你好</hello>
c、元素体:元素体可以是元素,也可以是文本,例如:
<b><a> 你好</a></b>
d、空元素:空元素只有开始标签,而没有结束标签,但元素必 须自己闭合.例如:
<c/>
<br/>
<input/>
<hr/>
e、元素命名:
区分大小写
不能使用空格,不能使用冒号:
不建议以XML、xml、Xml开头
良好的XML文档,必须有一个根元素。
(4)属性
语法:
<web-app version="2.5">
解析:
a、属性是元素的一部分,它必须出现在元素的开始标签中
b、属性的定义格式:属性名=属性值,其中属性值必须使用 单引或双引
c、一个元素可以有0~N个属性,但一个元素中不能出现同名 属性
d、属性名不能使用空格、冒号等特殊字符,且必须以字母开 头
(5)注释
语法:
<!-- 注释掉的内容 -->
解析:
与html一样,以“”结束。xml解析器会 自动忽略掉注释掉的xml代码。
(6)转义字符
语法:
< 对应<小于号 >对应>大于号 & 对应&和 ' 对应' 单引号 " 对应" 双引号
解析:
a、因为很多符号已经被XML文档结构所使用,所以在元素 体或属性值中想使用这些符号就必须使用转义字符
b、xml中的转义字符与html中的使用方式一样
(7)CDATA区
如果我们表述的文本中出现了大量的需要转义的字符,如果一个一个进行转换,那么会非常麻烦,我们可以使用CDATA来完成,写在CDATA中的内容是不需要进行转义操作的.
语法:
<![CDATA[
<><><><><><>>>>>><><><><><><&&&&&&’’’””””””””””””’>>
]]>
xml文档解析
sax 解析: 逐行解析,只能查询,
dom解析 : 一次性将文档加载到内存中,增删改查的操作都可以。 和 .yml 解析很像。
<?xml version="1.0" encoding="utf-8" ?>
<students>
<student id="01">
<name>小龙女</name>
<gender>女</gender>
<age>16</age>
<resume>古墓派掌门人</resume>
</student>
<student id="02">
<name>欧阳锋</name>
<gender>男</gender>
<age>18</age>
<resume>白驼山, 蛤蟆神功</resume>
</student>
</students>
/*指定读取第一个学生的信息*/
@Test
public void readOne() throws DocumentException {
//获取解析器
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/students.xml"));
//1.获取rootElement
Element rootElement = document.getRootElement();
//2.获取第一个学生
Element student = (Element) rootElement.elements("student").get(0);
//3.遍历student元素的节点并输出各个子节点的Text属性
Element name = student.element("name");
Element age = student.element("age");
Element gender = student.element("gender");
System.out.println("name=" + name.getText() + " age=" + age.getText() + " gender=" + gender.getText());
//4.获取指定 student元素/节点 的属性值
System.out.println("id=" + student.attributeValue("id"));
}
XML约束
3-1 DTD约束
DTD(Document Type Definition),文档类型定义,用来约束xml文档。规定xml文档中元素的名称,子元素的名称及顺序,元素的属性等。
3-2 Schema约束
同DTD约束一样,也是用来约束xml文档用的技术。
从功能上讲,Schema约束要比DTD强大很多,是DTD 替代者
Schema本身也是xml文档,但Schema文档的扩展名为xsd,而不是xml。