Python解析XML文件的方法一般有两种,一种是使用内置的xml.etree.ElementTree模块进行解析,另一种是使用第三方库lxml。本文将介绍这两种方法的具体使用。
一、使用xml.etree.ElementTree模块解析XML文件
1. 载入XML数据
首先,我们需要载入XML数据。假设我们有一个book.xml文件,内容如下所示:
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
</catalog>
用以下代码将XML文件载入内存:
import xml.etree.ElementTree as ET
tree = ET.parse('book.xml')
root = tree.getroot()
2. 遍历XML文档
我们可以遍历整个XML文档,获取文档中的所有元素及其属性值。例如,以下代码输出每个book元素的id属性值:
for book in root.findall('book'):
book_id = book.get('id')
print(book_id)
3. 查找元素
我们使用 findall()
方法查找特定类型的元素。例如,以下代码输出所有book元素的title元素内容:
for book in root.findall('book'):
title = book.find('title').text
print(title)
4. 修改元素
我们可以使用 set()
方法修改元素属性。例如,以下代码将第一个book元素的id属性修改为 ‘bk111’:
root.findall('book')[0].set('id', 'bk111')
5. 删除元素
我们可以使用 remove()
方法删除元素。例如,以下代码删除第二个book元素:
root.remove(root.findall('book')[1])
二、使用lxml库解析XML文件
1. 载入XML数据
我们同样需要载入XML数据。与使用xml.etree.ElementTree模块方法类似,我们可以使用以下代码将XML文件载入内存:
from lxml import etree
tree = etree.parse('book.xml')
root = tree.getroot()
2. 遍历XML文档
我们可以使用XPath表达式遍历XML文档。例如,以下代码输出所有book元素的title元素内容:
for book in root.xpath('//book'):
title = book.xpath('title/text()')[0]
print(title)
3. 查找元素
我们同样可以使用XPath表达式查找特定类型的元素。例如,以下代码输出所有book元素的author元素内容:
for book in root.xpath('//book'):
author = book.xpath('author/text()')[0]
print(author)
4. 修改元素
我们同样可以使用 set()
方法修改元素属性。例如,以下代码将第一个book元素的id属性修改为 ‘bk111’:
root.xpath('//book')[0].set('id', 'bk111')
5. 删除元素
我们可以使用 remove()
方法删除元素。例如,以下代码删除第二个book元素:
root.xpath('//book')[1].getparent().remove(root.xpath('//book')[1])
以上就是Python解析XML文件的两种方法,分别使用xml.etree.ElementTree模块和lxml库。