XML 初学者教程

什么是 XML?

XML 代表 eX可拉伸的 MArkupe L语言。它是一种使用标记并可以扩展的语言(不是编程语言)。它源自 STANDARD G概括 MArkupe L语言(SGML)。 XML 还使用 DTD(D占用 TYPE DXML 定义(英语:definitions)来定义 XML 文档结构。

XML 不用于处理计算操作和算法。因此,XML 不是编程语言。其主要目标是传输数据,而不是显示信息。XML 弥合了人类可读性和机器可读性之间的差距。与 HTML 标签不同,XML 标签是自描述的。

XML 是一种开放格式。XML 的文件扩展名为 .xml

XML 的历史

XML 始于 1996 年,并于 1998 年首次发布。 W联合国 WIDE Web Consortium(W3C)是 XML,它变成了 W3C 推荐

XML 有两个版本。

  1. XML 1.0
  2. XML 1.1

XML 1.1 是最新版本。然而, XML 1.0 是最常用的版本。

XML 的编辑器包括:

  • 蒂姆·布雷,
  • 让·保利,
  • CM Sperberg,
  • 伊芙·马勒
  • 弗朗索瓦·耶尔热(François Yergeau)。

XML 功能

以下是 XML 的一些重要特性:

  • 它是可扩展的并且易于人类阅读。
  • 它独立于平台和语言。
  • 它保留了空白。
  • 整体来说比较简单。
  • 自我描述的性质。
  • 它将数据与 HTML 分离。
  • XML 标记不是预定义的。 您需要定义自定义标签。
  • XML 旨在承载数据,而不是显示该数据。
  • XML 的标记代码很容易为人类所理解。
  • 结构良好的格式易于从程序中读取和写入。
  • XML 是一种像 HTML 一样的可扩展标记语言。

XML 编码

编码是将 Unicode 字符转换为其二进制表示形式。 UTF 用于 XML 编码。 联合会 代表 UCS (UCS 代表 Universal C破坏者 S等) T转型 F格式。

UTF编码主要有两种类型。

  1. UTF-8:UTF-8 使用 8 位来表示字符。
  2. 示例:

    <?xml version="1.0" encoding="UTF-8"?>
    
  3. UTF-16

它使用 16 位来表示字符。

示例:

<?xml version="1.0" encoding="UTF-16"?>

您可以在 XML 声明中使用编码。UTF-8 是 XML 中的默认编码。

XML 语法

下面的代码段显示了基本的 XML 语法。

<?xml version = "1.0" encoding = "UTF-8" ?>
<root>
    <child>
        <subchild>.....</subchild>
    </child>
</root>

XML 声明

XML 声明由 XML 版本、字符编码或/和独立状态组成。声明是可选的。

XML 声明的语法

下面的代码段显示了 XML 声明的语法。

<?xml version="version_number," encoding="character_encoding" standalone="yes_or_no" ?> 

XML 声明规则

以下是 XML 声明规则。

  • 如果存在 XML 声明,它必须是第一个出现的内容。
  • XML 声明区分大小写,必须以小写字母开头 <?xml.
  • 它没有结束标签。

XML 声明示例

下面的代码段显示了 XML 声明的示例。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

XML 注释

评论是可选的。添加评论有助于理解文档内容。

XML 注释的语法

评论开头为 并以...结束 –>.

下面的代码段显示了 XML 注释的语法。

<!-- Add your comment here -->

XML 标签和元素

标签除了声明外都是成对出现的。每个标签对都由一个 开始标签 (也称为 开始标签)和一个 结束标签 (也称为 结束标签).

标签名称包含在 <>。对于特定的标签对,开始和结束标签必须相同,但结束标签除外 /<.

<name>...</name>

开始和结束标签之间的任何内容都称为 内容.

开始标签、内容和结束标签合称为 element.

Opening tag + content + closing tag = an element

请注意: 元素也可能包含属性。你很快就会学到属性。

让我们考虑下面的因素。

<age>20</age>

在上面的元素中,

  • 年龄元素的名称。

备注:标签名称 也称为 element or 元素名称.

  • – 开始标签
  • 25 –内容
  • – 结束标签。

如果标签之间没有内容,如下所示,则称为 空标签.

<result></result>

XML 标签和元素规则

以下列表显示了 XML 标签和元素规则。

  • 标签区分大小写。

示例:

正确的:

<age>20</age>

错误:

<age>20</Age>

注意:年龄, 年龄,年龄 在 XML 中有三种不同的名称。

  • 所有 XML 文档都必须包含单个根元素。
  • 所有元素都必须有一个结束标签(声明除外)。
  • 标签名称必须以字母或下划线开头,不能以 XML。
  • 标签名称可以包含字母、数字、连字符、下划线和句点。连字符、下划线和句点是唯一允许使用的标点符号。
  • 标签名称不能包含空格。
  • 所有元素必须正确嵌套。

示例:

正确的:

<b><u>This text is bold and italic</u></b>

错误:

<b><u>This text is bold and italic.</b></u>

XML 属性

元素的属性位于开始标记中的标记名称之后。您可以为单个元素添加具有不同属性名称的多个属性。

让我们考虑下面的 XML 文档。

<company name="ABC Holdings" location="London">  
    <chairman>Mr. John</chairman>  
    <gm>Mr. Wood</gm>  
</company>  

有两个属性 公司 元素,即 姓名地址.

让我们研究一下 姓名 属性,

  • 名称=”ABC控股” – 属性
  • 姓名 – 属性名称
  • 农行控股 – 属性值

备注:安 属性名称 也被称为 属性.

另请注意,在上面的例子中, 公司 元件。

XML 属性规则

以下列表显示了 XML 属性规则。

  • 属性值必须在引号内。
  • 一个元素不能包含多个同名的属性。

属性与元素

你还搞不清楚属性和元素的区别吗?下面是另一个例子。

让我们考虑下面给出的文件 A 和 B。

文件 A:

<teacher subject="English">
    <name>Mr. John</name>.
    <qualification>Graduate</qualification>
</teacher>

文件 B:

<teacher>
    <subject>English</subject>
    <name>Mr. John</name>
    <qualification>Graduate</qualification>
</teacher>

在文档 A 中, 主题 是一个 属性。

在文档 B 中, 主题 是一个 element.

XML 实体

什么是 XML 实体?

简单来说,实体是一种表示特殊字符的方式。实体也称为 实体 引用.

为什么需要 XML 实体?

一些字符(例如 , & <等)在 XML 中是保留的。它们被称为 特殊的角色 不能直接用于其他用途。

例如 < > 用于的符号 标签. 您无法直接从键盘输入 少于比...更棒 符号。相反,您需要使用实体。

下表显示了一些流行的 XML 实体。

字符 描述 实体名称 用法
引号(双引号) QUOT
& 与号 amp
撇号(单引号)
< Less 比标志 lt <
> 大于号 gt >

示例:

<friend>
        <name>My friends are Alice &amp; Jane.</name>
</friend>

HTML 与 XML

HTML 和 XML 之间的相似之处

以下列表显示了 HTML 和 XML 之间的相似之处。

  • 两者都是开放格式。
  • 两者都是标记语言。
  • 两者都使用标签和属性来描述内容。

HTML 和 XML 之间的差异

尽管 XML 与 HTML 类似,但 XML 并不能替代 HTML。HTML 和 XML 之间也存在一些显著差异。

下表显示了 HTML 和 XML 之间的比较。

HTML XML
代表 超文本标记语言 可扩展标记语言
语言类型 预定义的标记语言。 指定标记语言的框架。
结构细节 不提供。 提供。
目的 用于显示数据。 用于传输数据
通过驱动 格式驱动。 内容驱动。
自然 具有静态性质。 具有动态性质。
标签类型 预定义标签。 用户定义的标签。
标签限制 可用的标签数量有限。 标签是可扩展的。
结束标签 没有必要使用结束标签(但建议使用结束标签)。 结束标签是强制性的。
命名空间支持 不支持。 支持的。
区分大小写 标签不区分大小写。 标签区分大小写。
空格 空白不能保留(可以忽略空白)。 保留空白(不能忽略空白)。
解析 Java脚本 不需要任何额外的应用程序。 需要 DOM 实现。
代码嵌套 不一定需要。 需要。
故障 可以忽略小错误。 不允许出现错误。
文件扩展名 的.html or 。HTM 。XML
尺码 较大。 比较小。
行情 属性值不需要加引号。 XML 属性值必需。
对象支持 提供本机对象支持。 对象必须通过惯例来表达。
空支持 本机识别空值。 需要在元素上使用 xsi:nil。
格式决定 为应用程序数据提供直接映射。 需要付出更大的努力。
学习曲线 Less 与 XML 相比,学习曲线陡峭。 陡峭的学习曲线。
网站 https://html.spec.whatwg.org/ https://www.w3.org/TR/xml11/

基本 HTML 语法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
     
</body>
</html>

基本 XML 语法

<?xml version = "1.0" encoding = "UTF-8" ?>
<root>
    <child>
        <subchild>.....</subchild>
    </child>
</root>

具有 HTML 和 XML 的相同示例

使用 HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
         <p>Book</p>
    <p>Name: Anna Karenina</p>
    <p>Author: Leo Tolstoy</p>
    <p>Publisher: The Russian Messenger</p>
</body>
</html>

使用 XML

<?xml version = "1.0" encoding = "UTF-8" ?>
<book>
        <name>Anna Karenina</name> 
        <author>Leo Tolstoy</author> 
      <publisher>The Russian Messenger</publisher>
</book>

JSON 与 XML

JSON 和 XML 之间的相似之处

以下列表显示了 JSON 和 XML 之间的相似之处。

  • 两者都是开放格式。
  • 两者都是自我描述的。
  • 两者都有层次结构。
  • 两者都可以被多种编程语言解析和使用。

JSON 和 XML 之间的差异

XML 和 JSON 之间也存在一些差异。

下表显示了 JSON 和 XML 之间的比较。

JSON XML
代表 Java脚本对象符号 可扩展标记语言
延伸自 JavaScript SGML
数据存储 以键值对形式存储的数据。 数据以树状结构存储。
命名空间 不支持命名空间。 支持命名空间。
评论 不支持添加评论。 可以添加评论。
数据可访问性 可作为 JSON 对象轻松访问。 需要解析数据。
元数据 不支持添加元数据。 可以写入元数据。
类型 JSON 类型:字符串、数字、数组、布尔值。 所有 XML 数据都应该 字符串.
支持的数据类型 支持 文本 仅限数据类型。 支持多种数据类型(文本、数字、图像等)
Array 的支持 与 XML 相比,对数组的支持更多。 不支持或者较少支持数组。
对象的支持 对对象的本机支持。 对象必须通过惯例来表达。
AJAX 工具包支持 支持的。 未完全支持。
检索值 简单。 难的。
反序列化/序列化 完全自动化。 开发人员必须编写 Java脚本代码。
浏览器支持 大多数浏览器都支持。 跨浏览器的 XML 解析可能比较棘手。
喷码 仅支持UTF-8编码。 它支持各种编码。
显示功能 无显示功能。 提供显示功能。
文档大小 比 XML 小。 比 JSON 大。
文件扩展名 .json 。XML
安全性 Less 安全的。 比 JSON 更安全。
易于阅读 比较容易。 比较困难。
学习曲线 简单易学。 陡峭的学习曲线。
网站 https://www.json.org/json-en.html https://www.w3.org/TR/xml11/

基本 JSON 语法

{string:value, .......}

具有 JSON 和 XML 的相同示例

使用 JSON

{"books":[
   {"name":"Anna Karenina", "author":"Leo Tolstoy"},
   {"name":"One Hundred Years of Solitude", "author":"Gabriel Garcia Marquez"},
   {"name":"The Great Gatsby", "author":"Scott Fitzgerald"},
   {"name":"Invisible Man", "author":"Ralph Ellison"}
]}

使用 XML

<?xml version = "1.0" encoding = "UTF-8" ?>
<books>
    <book>
        <name>Anna Karenina</name> 
        <author>Leo Tolstoy</author> 
    </book>
    <book>
        <name>One Hundred Years of Solitude</name> 
        <author>Gabriel Garcia Marquez</author> 
    </book>
    <book>
        <name>The Great Gatsby</name> 
        <author>Scott Fitzgerald</author> 
    </book>
    <book>
        <name>Invisible Man</name> 
        <author>Ralph Ellison</author>
    </book>
</books>

XML 文件类型定义 (DTD)

什么是DTD?

DTD代表 D占用 TYPE D定义。它使用一些合法元素来定义 XML 文档的结构。XML DTD 是可选的。

DTD 规则

以下列表显示了 DTD 规则。

  • 如果存在 DTD,它必须出现在文档的开头(只有 XML 声明可以出现在 DTD 上方)。
  • 元素声明必须以 ! 标记。
  • 根元素的 DTD 名称和元素类型必须相同。

DTD 示例

内部 DTD 的示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE student [
<!ELEMENT student (firstname,lastname,school)>  
<!ELEMENT firstname (#PCDATA)>  
<!ELEMENT lastname (#PCDATA)>  
<!ELEMENT school (#PCDATA)> 
]>
<student>  
    <firstname>Mark</firstname>  
    <lastname>Wood</lastname>  
    <school>Hills College</school>  
</student>

在上面的示例中,

  • !DOCTYPE 学生 表示 DTD 声明的开始。 学生 是 XML 文档的根元素。
  • !ELEMENT 学生 表示 学生 元素必须包含 名字,姓氏 学校 元素。
  • !ELEMENT 名字 表示 名字 元素属于类型 #PC数据 (P烧毁 C破坏者 时间).
  • !ELEMENT 姓氏 表示 姓氏 元素属于类型 #PC数据.
  • !ELEMENT 学校 表示 学校 元素属于类型 #PC数据.

外部 DTD 的示例:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE student SYSTEM "student.dtd">  
<student>  
    <firstname>Mark</firstname>  
    <lastname>Wood</lastname>  
    <school>Hills College</school>  
</student>  

DTD文件内容(student.dtd)如下。

<!ELEMENT student (firstname,lastname,school)>  
<!ELEMENT firstname (#PCDATA)>  
<!ELEMENT lastname (#PCDATA)>  
<!ELEMENT school (#PCDATA)>

XML DOM

什么是DOM?

DOM 代表 D占用 O对象 M模型。它定义了访问和操作 XML 文档的标准方式。DOM 具有(分层)树结构。

DOM 示例

让我们考虑下面的 XML 文档。

<?xml version="1.0" encoding="UTF-8" ?>  
<school>
    <student>  
        <name>
            <first_name>Alex</first_name>  
            <last_name>Clarke</last_name>  
        </name>
        <age>14</age>  
        <address>No. 35, Flower Road, Leeds</address>  
    </student> 
</school>

上述 XML 文件的树结构如下图所示。

XML DOM
XML DOM 示例

XML 验证

什么是格式良好的 XML 文档?

结构良好 XML文档是具有正确语法的XML文档。

什么是有效的 XML 文档?

有效 XML 文档格式良好,并且符合 DTD 规则。

XML 命名空间

为什么要使用命名空间?

命名空间有助于避免元素名称冲突。

命名空间声明

以下显示了命名空间声明的语法。

<element xmlns:name="URL">

在上述声明中,

  • - xmlns 关键字表示命名空间的开始。
  • - 姓名 是命名空间的前缀。
  • - 网址 是命名空间标识符。

命名空间示例

下面的代码段显示了命名空间的一个示例。

<?xml version="1.0" encoding="UTF-8" ?>  
<abt:about xmlns:abt="https://www.guru99.com/about-us.html">  
    <abt:founder>Krishna</abt:founder>  
    <abt:vision>Fun and Free Education for ALL</abt:vision>  
</abt:about>   

XML 编辑器

有多种 XML 编辑器可用。任何文本编辑器(例如记事本等)都可以用作 XML 编辑器。

以下列表显示了 2021 年一些流行的 XML 编辑器。

1)XML记事本

XML Notepad 是一款开源的 XML 编辑器。它的左侧窗格显示树形视图和 XSL 输出,右侧窗格显示节点文本。底部显示错误调试窗口。

关键统计:

  • 类型 – XML 编辑器
  • 开发商—— Microsoft
  • 支持的操作系统 – Microsoft Windows.
  • 价格 – 免费

链接: http://microsoft.github.io/XmlNotepad/


2)Stylus Studio

Stylus Studio 是一个用以下语言编写的 IDE C++ 可扩展标记语言 (XML) 的缩写。它允许用户编辑和转换 XML 文档、电子数据交换 (EDI) 等数据、CSV 和关系数据。

关键统计:

  • 类型 – XML 集成开发环境 (IDE)
  • 开发商 – Progress Software Corporation
  • 支持的操作系统 – Microsoft Windows.
  • 价格 – 付费(请参阅下面给出的网站了解最新价格),提供免费试用。

链接: http://www.stylusstudio.com/


3) Altova XML间谍

XMLSpy 主要作为 JSON 和 XML 编辑器进行销售。它有一个内置的架构设计器和编辑器。它包括 Visual Studio 和 Eclipse 积分。

关键统计:

  • 类型 – XML 编辑器
  • 开发商—— Altova
  • 支持的操作系统 – Microsoft Windows.
  • 价格 – 付费(请参阅下面给出的网站了解最新价格),提供免费试用。

链接:https://www.altova.com/xmlspy-xml-editor


4)Oxygen XML编辑器

Oxygen XML 是一个跨平台编辑器,于 Java。它有助于验证 DTD、W3C XML Schema、RELAX NG、Schematron、NRL 和 NVDL 模式等模式。

关键统计:

  • 类型 – XML 编辑器
  • 开发商—— SyncRO 软件有限公司
  • 支持的操作系统 – Windows、Linux 和 Mac OS X
  • 价格 – 已付费(请参阅下面给出的网站了解最新价格

链接:https://www.oxygenxml.com/


5)Xmplify

Xmplify XML Editor 提供了一个完全 XML 感知的编辑环境,具有基于 DTD 和 XML 模式的自动、自动文档验证等功能。

关键统计:

  • 类型 – XML 编辑器
  • 开发商 – MOSO 公司
  • 支持的操作系统 - Mac OS。
  • 价格 – 已付费(请参阅下面给出的网站了解最新价格

链接: http://xmplifyapp.com/

XML 解析器

XML 解析器是一个提供处理 XML 文档的接口的软件库。它检查 XML 文档的格式是否正确。一些解析器还可以验证 XML 文档。现代浏览器都带有 XML 解析器。

萨克斯

萨克斯 代表 Simple API 为 XML。这是一个 application p罗格拉姆 i接口(API) 用于解析 XML 文档。它们的行为类似于 Java.

与 DOM 不同,SAX 是基于事件的 XML 解析器的一个示例。

以下是 SAX 和 DOM 之间的一些重要区别。

萨克斯 DOM
代表 XML的简单API 文件对象模型
解析器的类型 基于事件 基于对象
读取和写入 XML 只读 既读又写
插入/更新/删除节点 无法插入/更新/删除节点 可以插入/更新/删除节点
内存效率 良好的记忆效率 可变
速度 比 DOM 解析器慢 比 SAX 解析器更快
适合 小尺寸文件 大型文件

XML 数据绑定

XML 数据绑定是将 XML 文档中的数据表示为计算机内存中的业务对象。

XML 数据绑定有三种方法。

  • 基于 XML 模式的数据绑定: 根据该模式创建相应的 XML 类。
  • 基于类的数​​据绑定: 基于类创建相应的 XML 模式。
  • 基于映射的数据绑定: 它描述了现有的 XML 模式如何映射到一组类(反之亦然)。

还有 XML 数据绑定框架。

例子:

使用框架可以轻松实现 XML 数据绑定。数据绑定框架会为您生成大量代码。您需要输入 DTD 或 XML 模式。

XML 模式

XML 架构 (也称为 XML 模式定义 or XSD) 用于描述 XML 文档结构。它是 DTD 的替代品。

为什么 Schema 很重要?

DTD 不如模式强大,因为它的可扩展性和灵活性不够。因此,它可能不适合某些情况。在这种情况下,模式很重要。使用 XML 模式的主要目的是定义 XML 文档的元素和属性。

XML Schema 与 DTD 有何不同?

以下比较显示了 XSD(XML Schema)与 DTD 的不同之处。

DTD XSD
代表 文件类型定义 XML 架构定义
可扩展性 不可扩展 扩展
XML 结构的控制 Less 控制 更多控制
支持的数据类型 不支持 支持
命名空间支持 不支持 支持

下面的代码段显示了 XML 模式的一个示例。

xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
    <xs:element name = "employee">
        <xs:complexType>
            <xs:sequence>
                <xs:element name = "firstname" type = "xs:string" />
                <xs:element name = "lastname" type = "xs:string" />
                <xs:element name = "phone" type = "xs:int" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

XML 的优点

以下是 XML 的优点/好处:

  • 它使得数据传输和共享变得容易。
  • XML 改善了不同平台之间的数据交换。
  • 它是一种标记语言,是放置在文本文档中的一组字符或/和符号。
  • XML 指示 XML 文档显示后应如何显示。
  • 它简化了平台变更过程。
  • 它提高了数据可用性。
  • 它支持多语言文档和 Unicode。
  • 提供相对容易学习和编码。
  • 它是一种标记语言,是放置在文本文档中的一组字符或/和符号。
  • 它使用 DTD 和 Schema 执行验证。
  • 使文档可跨系统和应用程序传输。 借助 XML,您可以在不同平台之间快速交换数据。
  • XML 将数据与 HTML 分离。

XML 的缺点

以下是使用 XML 的缺点/缺点:

  • XML 需要处理应用程序。
  • XML 语法类似于另一种替代的“基于文本”的数据传输格式,有时会造成混淆。
  • 没有内部数据类型支持
  • XML 语法是多余的。
  • 不允许用户创建他的标签。

总结

  • XML 代表可扩展标记语言。XML 是一种使用标记并可以扩展的语言(不是编程语言)。
  • 主要目的是传输数据,而不是显示数据。
  • XML 1.1 是最新版本。然而,XML 1.0 是最常用的版本。
  • 除声明外,标签都是成对使用的。
  • 开始标签 + 内容 + 结束标签 = 元素
  • 实体是表示特殊字符的一种方式。
  • DTD 代表文档类型定义。它使用一些合法元素来定义 XML 文档的结构。XML DTD 是可选的。
  • DOM 代表文档对象模型。它定义了访问和操作 XML 文档的标准方式。
  • 格式良好的 XML 文档是具有正确语法的 XML 文档。
  • 有效的 XML 文档格式良好,并且符合 DTD 规则。
  • 命名空间有助于避免元素名称冲突。