从化商城网站建设,展示型网站模板代码,福田企业网站优化有用吗,黑龙江建设网ca锁费用概述 在上一节#xff0c;我们介绍了Python的正则表达式#xff0c;包括#xff1a;正则表达式的定义、正则表达式的语法、re.search函数、re.match函数、re.findall函数、re.sub函数、re.compile函数、re.finditer函数、re.split函数等内容。在这一节#xff0c;我们将介绍…概述 在上一节我们介绍了Python的正则表达式包括正则表达式的定义、正则表达式的语法、re.search函数、re.match函数、re.findall函数、re.sub函数、re.compile函数、re.finditer函数、re.split函数等内容。在这一节我们将介绍如何在Python中使用xml。 XML英文全称为eXtensible Markup Language中文为可扩展标记语言是一种类似于HTML但是没有使用预定义标记的语言。因此XML可以根据自己的设计需求来定义专属的标记。最重要的是因为XML的基本格式是标准化的如果你在本地或互联网上跨系统或平台共享或传输XML接收者仍然可以解析收到的数据。一句话总结就是XML被设计用来传输和存储数据不用于表现和展示数据HTML则用来表现数据。 在Python中通常使用如下几种方式来处理xml。 SAX英文全称为Simple API for XML逐行扫描XML文档边扫描边解析占用内存较小速度较快。缺点是不能长期留驻在内存数据不是长久的事件过后若没保存数据数据便会丢失。 DOM英文全称为Document Object Model会将整个XML读入内存在内存中解析成一个树通过对树的操作来操作XML。该方式占用内存较大解析速度较慢。 ElementTree元素树兼具了SAX方式和DOM方式的优点占用内存较小速度较快使用较简单。 SAX SAX是一种基于事件的解析XML的接口它不会将整个文档加载到内存中而是逐行或逐个元素地读取文档然后触发相应的事件。在Python中可以使用内置的xml.sax模块来实现SAX解析器。该模块提供了一组基本的事件处理器类可以用于处理XML的不同部分比如元素、属性、文本等。由于SAX不会将整个文档加载到内存中因此它更适合处理大型XML文档。 假如有如下的Friends.xml文件
?xml version1.0 encodingUTF-8?
FriendsFriendNameMike/NameAge18/Age/FriendFriendNameTom/NameAge16/Age/Friend
/Friends 我们可以使用下面的示例代码来读取这个Friends.xml文件。
import os
import xml.saxclass FriendHandler(xml.sax.ContentHandler):def __init__(self):self.name self.age # 元素开始时调用def startElement(self, tag, attributes):self.CurrentData tag# 元素结束时调用def endElement(self, tag):if self.CurrentData Name:print(Name is, self.name)elif self.CurrentData Age:print(Age is, self.age)self.CurrentData # 读取字符时调用def characters(self, content):if self.CurrentData Name:self.name contentelif self.CurrentData Age:self.age contentparser xml.sax.make_parser()
Handler FriendHandler()
parser.setContentHandler(Handler)
path os.getcwd() Friends.xml
parser.parse(path) 在上面的示例代码中我们定义了一个名为FriendHandler的类它继承了xml.sax.ContentHandler类并实现了其中的三个方法分别为startElement、endElement和characters。当解析器遇到元素开始标签时会调用startElement方法。当遇到元素结束标签时会调用endElement方法。当遇到元素内的文本时会调用characters方法。运行示例代码后其输出如下
Name is Mike
Age is 18
Name is Tom
Age is 16 DOM DOM是一种用于表示HTML和XML文档的接口标准它提供了一种方式使得开发者可以通过编程方式访问和修改文档的内容和结构。在Python中可以使用多种库来实现DOM解析器比如xml.dom.minidom、lxml等。 在下面的示例代码中我们使用xml.dom.minidom来解析上面提到的Friends.xml文件。另外我们还可以使用minidom.parseString来解析xml字符串。
import xml.dom.minidom as minidomdoc minidom.parse(Friends.xml)
root doc.documentElement
children root.childNodes
for child in children:if child.nodeName Friend:name child.getElementsByTagName(Name)[0]print(Name is, name.childNodes[0].data)age child.getElementsByTagName(Age)[0]print(Age is, age.childNodes[0].data) ElementTree ElementTree提供了一个简单而高效的API用于解析和创建XML数据它使用了一种基于树的模型来表示XML文档使得我们可以很方便地访问和修改XML数据的元素和属性。 在下面的示例代码中我们使用ElementTree来解析上面提到的Friends.xml文件。
import xml.etree.ElementTree as ETtree ET.parse(Friends.xml)
root tree.getroot()
for friend in root:name friend[0]print(Name is, name.text)age friend[1]print(Age is, age.text) 使用ElementTree我们还可以很方便地生成xml并保存到文件或字符串中。下面示例代码中生成的Friends_new.xml文件的内容与上面提到的Friends.xml文件的内容相同。
import xml.etree.ElementTree as ETroot ET.Element(Friends)child ET.SubElement(root, Friend)
child_name ET.SubElement(child, Name)
child_name.text Mike
child_age ET.SubElement(child, Age)
child_age.text 18child ET.SubElement(root, Friend)
child_name ET.SubElement(child, Name)
child_name.text Tom
child_age ET.SubElement(child, Age)
child_age.text 16tree ET.ElementTree(root)
with open(Friends_new.xml, wb) as file:tree.write(file, UTF-8)