XML简介

95 阅读3分钟

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。