📅  最后修改于: 2023-12-03 15:21:18.972000             🧑  作者: Mango
XML(可扩展标记语言)是一种文本格式,用于存储和传输数据。它被广泛用于Web开发和数据交换。本教程将向您介绍XML的基础知识和语法。
XML是一种被用于描述数据的标记语言。与HTML不同,XML不是固定的标记集。它允许使用者自己定义标记集,因此更加灵活。
XML的常见应用包括:
XML由元素(element)和属性(attribute)组成。
XML元素是XML文件的基本结构单位。它始于一个起始标记,结束于一个结束标记,中间包含要被描述的数据。
XML元素的语法格式如下:
<elementTag>data</elementTag>
其中,elementTag是元素的标记,data是元素所包含的数据。例如:
<book>
<title>鬼吹灯之精绝古城</title>
<author>天下霸唱</author>
<price>35</price>
</book>
在这个例子中,<book>
是元素的起始标记,</book>
是元素的结束标记,<title>
、<author>
、<price>
是book元素的子元素。
属性是位于元素标记内,与该元素相关的名称/值对。属性的语法格式如下:
<elementTag attributeName="attributeValue">data</elementTag>
例如:
<person name="Mike Smith">Hello, Mike!</person>
在这个例子中,<person>
标记有一个名为name
的属性,属性值为Mike Smith
。
XML声明指明了XML的版本和字符编码。它应该位于XML文档中的第一行。如下所示:
<?xml version="1.0" encoding="UTF-8"?>
在XML文档中,注释用于让程序员在代码中添加对代码的解释或说明。注释以<!--
起始,-->
结束。例如:
<!-- This is a comment -->
XML解析是指把XML文件转化为XML文档对象模型(DOM)或XML简单API(SAX)。
DOM(Document Object Model)解析器会将XML文档转化为一个XML文档树,以便程序员可以更容易地反向操作。DOM解析器将整个XML文档读入到内存中,并且允许开发者使用DOM中的方法和属性。
import xml.etree.ElementTree as ET
tree = ET.parse('data.xml')
root = tree.getroot()
# 输出root元素的标记
print(root.tag)
# 输出所有元素及其子元素和文本内容
for child in root:
print(child.tag, child.attrib)
for c in child:
print(c.tag, c.text)
SAX(Simple API for XML)解析器是一种基于事件的解析器。它不需要读取整个XML文档,只需要逐行读取XML文档,并调用相关的事件来处理。SAX解析器更适用于大文件的解析。
import xml.sax
class MyHandler(xml.sax.ContentHandler):
def __init__(self):
self.current = ""
self.title = ""
self.author = ""
self.price = ""
# 读取每个元素的开始标记
def startElement(self, tag, attributes):
self.current = tag
# 读取每个元素的结束标记
def endElement(self, tag):
if self.current == "title":
print("Title: ", self.title)
elif self.current == "author":
print("Author: ", self.author)
elif self.current == "price":
print("Price: ", self.price)
# 读取元素标记之间的数据
def characters(self, content):
if self.current == "title":
self.title = content
elif self.current == "author":
self.author = content
elif self.current == "price":
self.price = content
# 创建SAX解析器并解析XML
parser = xml.sax.make_parser()
parser.setContentHandler(MyHandler())
parser.parse("data.xml")
本教程向您介绍了XML的基础知识、语法以及XML的解析方法。XML是一门重要的标记语言,应用广泛。对于Web开发来说,学习XML是不可或缺的一部分。