一、什么是XML?

  • XML是指可扩展标记语言(eXtensible MarkupLanguage),它是一种标记语言。它被设计的宗旨是描述数据(XML),而非显示数据(HTML)。
  • 目前遵循的是W3C组织于2000年发布的XML1.0规范。
  • 应用场景:

    1、描述数据

    2、作为配置文件存在

二、XML的基本语法

1、文档声明:

  • 最简单的声明语法:
<?xml version="1.0" encoding="UTF-8"?>

中间不要加空格,后面加?号

当我们写好的一个xml文件写入内存的时候会转换为二进制保存,这个时候会查码表,记事本保存的时候是gbk,而保存的时候默认查码表时用的是utf-8,

  • 这个时候我们就可以用encoding属性:默认是UTF-8    <?xml version="1.0" encoding="GBK"?>,这样就可以解决乱码等问题。
  • standlone属性:该xml文件是否独立存在。

2.节点

  • 一个xml文档中除了文档声明外,就是节点了。而节点又分为以下类型:

    根节点        Root节点
    元素节点       Element节点
    属性节点       Attribute节点
    文本节点       Text节点
    注释节点       Comment节点
    CDATA节点。    
    文档节点:       document节点

案例一:(自定义一个xml文档)

<?xml version="1.0" encoding="UTF-8"?>
<root> <!-- 有且仅有一个根节点 -->
<student id="stu_1">
<name>张三</name>
<age>15</age>
</student>
<student id="stu_2">
<name>李四</name>
<age>25</age>
</student>
<student id="stu_3">
<name>王五</name>
<age>35</age>
</student>
</root>

结果:

  

  • 缺陷就是: 无法对节点进行约束和验证,比如元素节点<age></age>的子节点文本节点的值在此例中可以是任意类型的值,可以是字符串或者其他。
  • 2.1 用scheme对xml中的节点进行验证。

XML Schema 是基于 XML 的 DTD 替代者。

XML Schema 可描述 XML 文档的结构。

XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。

XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。

案例:建立一个xsd规则文件,并在xml文档中引入,起约束作用。

  • student.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/student"
xmlns:tns="http://www.example.org/student" elementFormDefault="qualified">
<!-- xmlns:xsd="http://www.w3.org/2001/XMLSchema" 字段表示引用w3c --> <xsd:element name="root" > <!-- 创建xml文档的根节点 -->
<xsd:complexType>
<xsd:sequence>
<xsd:element name="student" maxOccurs="5"> <!-- 创建student节点,且这个节点在xml文档中最多出现5次 -->
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"></xsd:element>
<xsd:element name="age" type="xsd:int"></xsd:element>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string"></xsd:attribute> <!-- 属性 的定义一定要放在最后面定义-->
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
  • 
    
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"此字段表示该schema文件中使用的元素和数据类型来自于http://www.w3.org/2001/XMLSchema这个名称空间
,同样指出来自于"http://www.w3.org/2001/XMLSchema"名称空间的元素和数据类型必须使用带"xsd: "前缀,一般在这里我们可以省略前缀。
  • targetNamespace="http://www.example.org/student"此字段表示该schema文件的命名空间,也就是说在引用该Schema的其它文档(包括自身文档)中要声明名称空间,

  其URI应该是targetNamespace的属性值。例如在a.xml中要用到student.xsd定义的扩展数据类型,必须引用xmlns="http://www.example.org/student"。

  • xmlns:tns="http://www.example.org/student" 此字段表示该schema文件中使用的元素和数据类型来自于“http://www.example.org/student”这个命名空间,而这个命名空间就是该student.xsd

文件(targetNamespace定义的),也就是引入本文件。前缀为“tns”

  • 在a.xml文档中引入这个student.xsd规则文件。
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.example.org/student" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/student student.xsd ">
<student>
<name>张三</name>
<age>15</age>
</student> </root>
  • xmlns="http://www.example.org/student" 此字段表示引入命名空间为“http://www.example.org/student”的类型和元素,
  • xmlns:xsi是指web.xml遵守xml规范
  • xsi:schemaLocation是指具体用到的schema资源 ,格式为:“需引入的命名空间 文件名 ”  //注意空格,文件名后也要有一个空格,文件名和明明空间也要有一个空格。

结果:



案例二:

student.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/student"
xmlns:tns="http://www.example.org/student" elementFormDefault="qualified">
<!-- xmlns:xsd="http://www.w3.org/2001/XMLSchema" 字段表示引用w3c --> <xsd:element name="other" ></xsd:element> <xsd:element name="root" > <!-- 创建xml文档的根节点 -->
<xsd:complexType>
<xsd:sequence >
<xsd:element name="student" maxOccurs="5" > <!-- 创建student节点,且这个节点在xml文档中最多出现5次 -->
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"></xsd:element>
<xsd:element name="age" >
<xsd:simpleType>
<!-- 设置元素节点的值为10~50之间,且为整型 -->
<xsd:restriction base="xsd:integer">
<xsd:maxInclusive value="50"></xsd:maxInclusive>
<xsd:minInclusive value="10"></xsd:minInclusive>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="sex" type="tns:sex"></xsd:element> <!-- 引用本文件自定义的类型,用用tns前缀 -->
<xsd:element name="content" type="xsd:string"></xsd:element>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" ></xsd:attribute> <!-- 属性 的定义一定要放在最后面定义-->
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element> <xsd:simpleType name="sex">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="男"></xsd:enumeration>
<xsd:enumeration value="女"></xsd:enumeration>
</xsd:restriction> </xsd:simpleType> </xsd:schema>

jdbc.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/jdbc"
xmlns:tns="http://www.example.org/jdbc" elementFormDefault="qualified"> <element name="jdbcInfo">
<complexType>
<sequence>
<element name="jdbcDriver" type="string"></element>
<element name="url" type="string"></element>
<element name="user" type="string"></element>
<element name="password" type="string"></element>
</sequence>
</complexType>
</element> </schema>

b.xml

 <?xml version="1.0" encoding="UTF-8"?>
<other xmlns="http://www.example.org/student" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.example.org/jdbc"
xsi:schemaLocation="http://www.example.org/student student.xsd
http://www.example.org/jdbc jdbc.xsd ">
<student>
<name>张三</name>
<age>25</age>
<sex>男</sex>
<content>
张三备注<![CDATA[</hello>]]></content> </student>
<jdbc:jdbcInfo>
<jdbc:jdbcDriver>com.mysql.jdbc.Driver</jdbc:jdbcDriver>
<jdbc:url>jdbc:mysql://127.0.0.1:3306/test</jdbc:url>
<jdbc:user>root</jdbc:user>
<jdbc:password></jdbc:password>
</jdbc:jdbcInfo>
</other>


3.特殊字符

特殊字符       替代符号

&             &amp

<             &lt

>             &gt

"             &quot

'             &apos


(一)XML基础(1)的更多相关文章

  1. .net学习笔记---xml基础知识

    一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基 ...

  2. XML 参考:XML基础 XML 简介

    XML 参考:XML基础 -- XML简介和用途 转:http://www.cnblogs.com/Dlonghow/archive/2009/01/22/1379799.html XML 参考:XM ...

  3. XML基础概念

    XML基础概念 一.什么是XML. 可扩展标记语言(EXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 二.XML特点 1 ...

  4. xml基础小结

    XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的“数据库” 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大小写.有且仅有一个根标签 ...

  5. XML基础<第一篇>

    一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基 ...

  6. JavaEE XML 基础知识

    JavaEE XML 基础知识 @author ixenos 1.    XML开头都需要一个声明 <?和?>表明这是一个处理指令 <?xml version=”1.0” encod ...

  7. JavaWeb学习日记----XML基础

    1.XML基础: XML全称为eXtensible Markup Language;即可扩展标记型语言,同HTML一样使用标签来操作.它的可扩展性体现在标签可以由自己定义,可以是中文标签. XML用途 ...

  8. pom.xml基础配置

    pom.xml基础配置: maven中,最让我迷惑的还是那一堆配置! 就拿这个属性配置来说: 我需要让整个项目统一字符集编码,就需要设定 <project.build.sourceEncodin ...

  9. XML基础+Java解析XML +几种解析方式的性能比较

    XML基础+Java解析XML 一:XML基础 XML是什么: 可扩展的标记语言 XML能干什么: 描述数据.存储数据.传输(交换)数据. XML与HTML区别: 目的不一样 XML 被设计用来描述数 ...

  10. 第一篇 -- XML基础

    一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基 ...

随机推荐

  1. base64和hex

    base64和hex 我们知道,字符分为二种:一种是可见字符:另一种是不可见字符. 1)三种编码方式 hex也称为base16,意思是使用16个可见字符来表示一个二进制数组,编码后数据大小将翻倍,因为 ...

  2. Borg、Omega和Kubernetes:谷歌十几年来从这三个容器管理系统中得到的经验教训 原创: 韩佳瑶 译 Docker 2016-03-23Borg、Omega和Kubernetes:谷歌十几年来从这三个容器管理系统中得到的经验教训 原创: 韩佳瑶 译 Docker 2016-03-23

    Borg.Omega和Kubernetes:谷歌十几年来从这三个容器管理系统中得到的经验教训 原创: 韩佳瑶 译 Docker 2016-03-23

  3. oneway modifier MQ 发送请求不接受任何响应

    Apache Thrift - Home http://thrift.apache.org/ /** * This method has a oneway modifier. That means t ...

  4. redis启动、关闭脚本

    #!/bin/bash PORT= NAME=redis-server ID=`ps -ef | grep "$NAME" | grep -v "grep" | ...

  5. window 下 某个端口被占用

    window 下 某个端口被占用 1. 开始—->运行—->cmd,或者是window+R组合键,调出命令窗口: 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观 ...

  6. pytorch常用normalization函数

    参考:https://blog.csdn.net/liuxiao214/article/details/81037416 归一化层,目前主要有这几个方法,Batch Normalization(201 ...

  7. PHP松散比较与严格比较的区别详解

    在PHP中相等的比较有两种,松散比较和严格比较,当使用松散比较时,如果进行比较的两个操作数类型不同,那么会对操作数进行适当的类型转换,如果转换后的值相同则认为两个操作数相等.而使用严格比较时,如果两个 ...

  8. It’s worth noting值得注意的是

    It’s worth noting that in JavaScript applications the Model is often connected via Ajax to a back-en ...

  9. MySQL数据库之sql_mode解释

    在MySQL5.6中,默认的SQL模式为:NO_ENGINE_SUBSTITUTION, 而在MySQL5.7中默认的SQL模式为:ONLY_FULL_GROUP_BY, STRICT_TRANS_T ...

  10. 算法习题---4-1象棋(UVa1589)

    一:题目 在黑方只有一个“将”的情况下,红方只有(车.马.炮)(可以多个).帅的情况下,判断黑方是否被将死 (一)题目详解 其中棋盘按照坐标方式表示,左上角为(,),列数最大9,行数最大10 G 表示 ...