Python中如何掌握XML基础知识?

2026-04-30 21:251阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1381个文字,预计阅读时间需要6分钟。

Python中如何掌握XML基础知识?

XML概述

1.1 XML简介

[定义] XML(可扩展标记语言,eXtensible Markup Language)是一种标记语言,是标准通用标记语言(SGML)的一个子集。XML具有可扩展性,可以定义自己的标签。

XML是一种标记语言,是从标准通用标记语言(SGML)简化而来的。它允许用户自定义标签,从而实现数据结构化和交换。

1 XML概述


1.1 XML简介


XML 指可扩展标记语言(eXtensibleMarkupLanguage)。可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。


传输和存储数据。


与开发语言的操作系统无关,可跨平台实现操作系统间的通信。


可扩展标记语言;很像HTML的标记语言;设计宗旨是传输数据,而不是显示数据;XML 标签没有被预定义;可以自定义标签对;被设计为具有自我描述性;W3C 的推荐标准。


1.2 XML语法

XML的一个小例子,可以参考上一节学习的内容。

<?xml version="1.0" encoding="utf-8"?>
<person>
<name>小明</name>
<sex>男</sex>
<age>18</age>
</person>


(可选择项)

从上面代码中可以看到,一个XML包含一个声明


必须有一个关闭标签。简单来说,XML必须有开始标签和结束标签,而且标签对的名称对大小写敏感。


属性值必须使用引号引起来。例如class="red"中red就要使用引号括起来,如下:

<person class="red">
<name>张三</name>
</person>


转义后

转义前

解释描述

&lt;

<

less than

&gt;

>

greater than

&amp;

&

ampersand

&apos;

'

apostrophe

&quot;

"

quotation mark


Python中如何掌握XML基础知识?

<!-- 这是一个人对象 -->
<person>
<name>张三</name>
<age>18</age>
<person>


2 Python解析XML

> 从上面的学习中,我已经了解什么是XML,下面就开始使用Python来解析XML文件。Python 有三种方法解析 XML,他们是「SAX」「DOM」,以及 「ElementTree」。


2.1 解析XML方式&实验文件

1. SAX (simple API for XML )

Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

2. DOM(Document Object Model)

将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。

3. ElementTree(元素树)

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。


比如,这里是一份xml文件persons.xml

<?xml version="1.0" encoding="utf-8"?>
<persons>
<person sid="001">
<name>张小帅</name>
<sex>男</sex>
<age>18</age>
</person>
<person sid="002">
<name>刘晓萌</name>
<sex>女</sex>
<age>21</age>
</person>
<person sid="003">
<name>王老四</name>
<sex>男</sex>
<age>38</age>
</person>
</persons>


2.2 SAX解析xml

SAX是一种基于事件驱动的 API。利用SAX解析XML文档牵涉到两个部分: 「解析器」和「事件处理器」。


将下面的内容写在一个SaxPersons.py文件中,

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xml.sax
class PersonHandler( xml.sax.ContentHandler ):
def __init__(self):
self.CurrentData = ""
self.name = ""
self.sex = ""
self.age = ""
# 开始元素事件
def startElement(self, tag, attributes):
self.CurrentData = tag
if tag == "person":
print ("*****person*****")
sid = attributes["sid"]
print ("编号:", sid)
# 结束元素事件
def endElement(self, tag):
if self.CurrentData == "name":
print ("姓名:", self.name)
elif self.CurrentData == "sex":
print ("性别:", self.sex)
elif self.CurrentData == "age":
print ("年龄:", self.age )
self.CurrentData = ""
# 元素内容事件处理
def characters(self, content):
if self.CurrentData == "name":
self.name = content
elif self.CurrentData == "sex":
self.sex = content
elif self.CurrentData == "age":
self.age = content

if ( __name__ == "__main__" ):

# 创建一个 XMLReader 对象
parser = xml.sax.make_parser()

# 打开一个执行空间
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
# 重写 ContextHandler 指向我们自定义的执行器``PersonHandler``
Handler = PersonHandler()
parser.setContentHandler( Handler )

# 解析转换指定路径上的XML文件
parser.parse("persons.xml")py


在Python3环境下,执行命令python3 SaxPersons.py解析结果如下:

Aion,Liu $ python3 SaxPersons.py

执行后的结果如下:

*****person*****

编号: 001

姓名: 张小帅

性别: 男

年龄: 18

*****person*****

编号: 002

姓名: 刘晓萌

性别: 女

年龄: 21

*****person*****

编号: 003

姓名: 王老四

性别: 男

年龄: 38


本文共计1381个文字,预计阅读时间需要6分钟。

Python中如何掌握XML基础知识?

XML概述

1.1 XML简介

[定义] XML(可扩展标记语言,eXtensible Markup Language)是一种标记语言,是标准通用标记语言(SGML)的一个子集。XML具有可扩展性,可以定义自己的标签。

XML是一种标记语言,是从标准通用标记语言(SGML)简化而来的。它允许用户自定义标签,从而实现数据结构化和交换。

1 XML概述


1.1 XML简介


XML 指可扩展标记语言(eXtensibleMarkupLanguage)。可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。


传输和存储数据。


与开发语言的操作系统无关,可跨平台实现操作系统间的通信。


可扩展标记语言;很像HTML的标记语言;设计宗旨是传输数据,而不是显示数据;XML 标签没有被预定义;可以自定义标签对;被设计为具有自我描述性;W3C 的推荐标准。


1.2 XML语法

XML的一个小例子,可以参考上一节学习的内容。

<?xml version="1.0" encoding="utf-8"?>
<person>
<name>小明</name>
<sex>男</sex>
<age>18</age>
</person>


(可选择项)

从上面代码中可以看到,一个XML包含一个声明


必须有一个关闭标签。简单来说,XML必须有开始标签和结束标签,而且标签对的名称对大小写敏感。


属性值必须使用引号引起来。例如class="red"中red就要使用引号括起来,如下:

<person class="red">
<name>张三</name>
</person>


转义后

转义前

解释描述

&lt;

<

less than

&gt;

>

greater than

&amp;

&

ampersand

&apos;

'

apostrophe

&quot;

"

quotation mark


Python中如何掌握XML基础知识?

<!-- 这是一个人对象 -->
<person>
<name>张三</name>
<age>18</age>
<person>


2 Python解析XML

> 从上面的学习中,我已经了解什么是XML,下面就开始使用Python来解析XML文件。Python 有三种方法解析 XML,他们是「SAX」「DOM」,以及 「ElementTree」。


2.1 解析XML方式&实验文件

1. SAX (simple API for XML )

Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

2. DOM(Document Object Model)

将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。

3. ElementTree(元素树)

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。


比如,这里是一份xml文件persons.xml

<?xml version="1.0" encoding="utf-8"?>
<persons>
<person sid="001">
<name>张小帅</name>
<sex>男</sex>
<age>18</age>
</person>
<person sid="002">
<name>刘晓萌</name>
<sex>女</sex>
<age>21</age>
</person>
<person sid="003">
<name>王老四</name>
<sex>男</sex>
<age>38</age>
</person>
</persons>


2.2 SAX解析xml

SAX是一种基于事件驱动的 API。利用SAX解析XML文档牵涉到两个部分: 「解析器」和「事件处理器」。


将下面的内容写在一个SaxPersons.py文件中,

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xml.sax
class PersonHandler( xml.sax.ContentHandler ):
def __init__(self):
self.CurrentData = ""
self.name = ""
self.sex = ""
self.age = ""
# 开始元素事件
def startElement(self, tag, attributes):
self.CurrentData = tag
if tag == "person":
print ("*****person*****")
sid = attributes["sid"]
print ("编号:", sid)
# 结束元素事件
def endElement(self, tag):
if self.CurrentData == "name":
print ("姓名:", self.name)
elif self.CurrentData == "sex":
print ("性别:", self.sex)
elif self.CurrentData == "age":
print ("年龄:", self.age )
self.CurrentData = ""
# 元素内容事件处理
def characters(self, content):
if self.CurrentData == "name":
self.name = content
elif self.CurrentData == "sex":
self.sex = content
elif self.CurrentData == "age":
self.age = content

if ( __name__ == "__main__" ):

# 创建一个 XMLReader 对象
parser = xml.sax.make_parser()

# 打开一个执行空间
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
# 重写 ContextHandler 指向我们自定义的执行器``PersonHandler``
Handler = PersonHandler()
parser.setContentHandler( Handler )

# 解析转换指定路径上的XML文件
parser.parse("persons.xml")py


在Python3环境下,执行命令python3 SaxPersons.py解析结果如下:

Aion,Liu $ python3 SaxPersons.py

执行后的结果如下:

*****person*****

编号: 001

姓名: 张小帅

性别: 男

年龄: 18

*****person*****

编号: 002

姓名: 刘晓萌

性别: 女

年龄: 21

*****person*****

编号: 003

姓名: 王老四

性别: 男

年龄: 38