Python3使用xml.dom.minidom和xml.etree模块解析xml文件封装函数的方法
在Python中,我们可以使用xml.dom.minidom和xml.etree模块来解析XML文件。本文将详细介绍如何使用这两个模块来解析XML文件,并封装成函数。
使用xml.dom.minidom模块解析XML文件
xml.dom.minidom模块是Python自带的XML解析器,它可以将XML文件解析成DOM树,并提供了一系列的API来操作DOM树。以下是一个使用xml.dom.minidom模块解析XML文件的示例:
import xml.dom.minidom
def parse_xml(xml_file):
# 解析XML文件
dom_tree = xml.dom.minidom.parse(xml_file)
# 获取根节点
root = dom_tree.documentElement
# 获取子节点
nodes = root.getElementsByTagName('book')
# 遍历子节点
for node in nodes:
# 获取节点属性
id = node.getAttribute('id')
# 获取子节点
title = node.getElementsByTagName('title')[0].childNodes[0].data
author = node.getElementsByTagName('author')[0].childNodes[0].data
year = node.getElementsByTagName('year')[0].childNodes[0].data
price = node.getElementsByTagName('price')[0].childNodes[0].data
# 打印节点信息
print('id: %s, title: %s, author: %s, year: %s, price: %s' % (id, title, author, year, price))
在上面的示例中,我们定义了一个parse_xml函数,它接受一个XML文件路径作为参数。在函数内部,我们使用xml.dom.minidom.parse()方法解析XML文件,并获取根节点。然后,我们使用getElementsByTagName()方法获取子节点,并使用getAttribute()方法获取节点属性。最后,我们使用childNodes[0].data属性获取子节点的文本内容,并打印节点信息。
使用xml.etree模块解析XML文件
xml.etree模块是Python自带的另一个XML解析器,它提供了一系列的API来解析XML文件。以下是一个使用xml.etree模块解析XML文件的示例:
import xml.etree.ElementTree as ET
def parse_xml(xml_file):
# 解析XML文件
tree = ET.parse(xml_file)
# 获取根节点
root = tree.getroot()
# 遍历子节点
for node in root.findall('book'):
# 获取节点属性
id = node.get('id')
# 获取子节点
title = node.find('title').text
author = node.find('author').text
year = node.find('year').text
price = node.find('price').text
# 打印节点信息
print('id: %s, title: %s, author: %s, year: %s, price: %s' % (id, title, author, year, price))
在上面的示例中,我们定义了一个parse_xml函数,它接受一个XML文件路径作为参数。在函数内部,我们使用ET.parse()方法解析XML文件,并获取根节点。然后,我们使用root.findall()方法获取子节点,并使用get()方法获取节点属性。最后,我们使用find()方法获取子节点的文本内容,并打印节点信息。
总结
本文介绍了如何使用Python的xml.dom.minidom和xml.etree模块来解析XML文件,并封装成函数。在实际应用中,我们可以根据需要使用这些技术,实现各种XML文件的解析和处理任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法 - Python技术站