xml文件学习(xml格式)可扩展标记语言(Extensible Markup Language)

2023-12-29 11:34:19

XML 教程

XML 文件学习

XML,全称为可扩展标记语言(Extensible Markup Language),被广泛用于存储和传输数据。在深入研究XML的使用前,有必要先了解其基本概念以及常见的应用场景。

1. XML 概述

1.1 什么是 XML?

XML 是一种用于存储和传输数据的工具,而非编程语言。它主要用于描述数据和文本,与HTML类似,但XML比HTML更强大,因为它允许自定义标签。

1.2 XML 有什么作用?

XML 的主要作用是方便数据的共享、传输和平台无关性。例如,可以使用XML来在不同的系统之间交换数据,包括Internet上的业务数据交换。

2. XML 基本结构

XML(可扩展标记语言)是一种用于编码文档的标记语言,它允许定义各种数据类型,包括文本、数字、日期、时间、布尔值等。

以下是一个XML文档的例子:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title> 
    <author>Giada De Laurentiis</author> 
    <year>2005</year> 
    <price>30.00</price> 
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title> 
    <author>J K. Rowling</author> 
    <year>2005</year> 
    <price>29.99</price> 
  </book>
</bookstore>

一个XML文档由以下几个基本部分组成:

1. 声明

每个XML文档都以XML声明开始,这个声明通常包含XML版本和字符集信息。例如:

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

在这个例子中,version属性表示XML规范的版本,encoding属性表示字符集。

2. 元素

XML元素是XML文档的主体,由开始标签、结束标签和包含在其中的内容(可能是其他元素、文本或混合内容)组成。例如:

<book>
  <title>The Lord of the Rings</title>
  <author>J. R. R. Tolkien</author>
</book>

在这个例子中,booktitleauthor都是元素。

3. 属性

XML属性为元素提供附加信息,出现在开始标签内,以名称-值对的形式存在。例如:

<book id="123">
  <title>The Lord of the Rings</title>
  <author>J. R. R. Tolkien</author>
</book>

在这个例子中,idbook元素的属性,其值为"123"。

4. 文本

XML文本是元素的内容,位于开始标签和结束标签之间。例如:

<title>The Lord of the Rings</title>

在这个例子中,"The Lord of the Rings"就是文本。

5. 注释

XML注释用于在XML文档中添加注解,注释不会被XML解析器解析。例如:

<!-- This is a comment -->

以上就是XML的基本结构。需要注意的是,所有的XML元素必须有关闭标签,XML标签对大小写敏感,且XML文档必须正确嵌套。

3. XML 高级知识

3.1 XML 命名空间

为了避免命名冲突,XML支持命名空间的概念。这对于合并两个不同来源的XML文档特别有用。

例如:

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">

<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

</root>

在这个例子中,“h”和“f”是分别定义在"http://www.w3.org/TR/html4/"和"http://www.w3schools.com/furniture"上的命名空间。

3.2 XML 架构

XML架构是一个XML "应用"或"语言"的定义。最常见的是DTD(文档类型定义)和XSD(XML Schema Definition)。

例如,下面是一个简单的XSD(XML Schema Definition):

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="to" type="xs:string"/>
      <xs:element name="from" type="xs:string"/>
      <xs:element name="heading" type="xs:string"/>
      <xs:element name="body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

这个XSD定义了一个元素“note”,它包含四个字符串类型的子元素:to、from、heading和body。

3.3 XML 工具

有许多可用的XML解析器,例如:SAX, DOM 等。以及一些工具库如 JAXB, JDOM, Xerces, Xalan, etc.

例如,使用Python的xml.etree.ElementTree模块(类似于DOM)解析XML:

import xml.etree.ElementTree as ET

data = """
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title> 
    <author>Giada De Laurentiis</author> 
    <year>2005</year> 
    <price>30.00</price> 
  </book>
</bookstore>
"""

root = ET.fromstring(data)

for book in root.findall('book'):
  title = book.find('title').text
  author = book.find('author').text
  print(title, author)

3.4 XML 技术

包括XSLT、XPath、XQuery、SOAP等都是基于XML的技术。

例如,下面是一个简单的XSLT样式表,它将XML文档转换为HTML:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>Bookstore</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Author</th>
      </tr>
      <xsl:for-each select="bookstore/book">
      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="author"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

4. XML 应用实例

假设我们有一个需求,需要创建一个XML文档来描述一个图书馆的书籍信息。每本书都有ISBN、标题、作者和出版年份等信息。

基于这个需求,我们可以逐步构建如下的XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<library>
    <book isbn="978-3-16-148410-0">
        <title>The Lord of the Rings</title>
        <author>J. R. R. Tolkien</author>
        <year>1954</year>
    </book>
    <book isbn="978-0-7432-4722-0">
        <title>A Brief History of Time</title>
        <author>Stephen Hawking</author>
        <year>1988</year>
    </book>
    <!-- 更多的书籍信息... -->
</library>

在这个XML文档中,library元素是根元素,它包含多个book元素。每个book元素都有一个属性isbn,并包含三个子元素:titleauthoryear

XML是一种非常灵活的数据表示方式,可以轻松地添加、删除或修改元素和属性以满足各种需求。例如,如果我们需要为每本书添加价格信息,只需在book元素内添加一个新的price元素即可。


以上是关于XML的一些基础和高级知识。在深入了解这些内容后,可以开始尝试使用XML来存储和传输数据。

文章来源:https://blog.csdn.net/Dontla/article/details/124307098
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。