XML是一种常见的数据格式,用于在不同的应用程序之间传输数据。Python提供了多种解析XML的方法,包括ElementTree、minidom和SAX等。以下是Python如何对XML解析的完整攻略,包含两个示例。
示例1:使用ElementTree解析XML
以下是一个示例,可以使用ElementTree解析XML:
import xml.etree.ElementTree as ET
# 定义XML文档
xml = '''
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
'''
# 解析XML文档
root = ET.fromstring(xml)
# 获取所有书籍
books = root.findall('book')
# 输出结果
for book in books:
title = book.find('title').text
author = book.find('author').text
year = book.find('year').text
price = book.find('price').text
print(f'Title: {title}')
print(f'Author: {author}')
print(f'Year: {year}')
print(f'Price: {price}')
在上面的示例中,我们首先定义一个XML文档,并使用ElementTree的fromstring方法解析文档。然后,我们使用findall方法获取所有书籍,并使用find方法获取每个书籍的标题、作者、年份和价格。最后,我们使用print函数输出结果。
示例2:使用SAX解析XML
以下是一个示例,可以使用SAX解析XML:
import xml.sax
# 定义XML文档
xml = '''
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
'''
# 定义处理器
class BookHandler(xml.sax.ContentHandler):
def __init__(self):
self.current_element = ''
self.title = ''
self.author = ''
self.year = ''
self.price = ''
def startElement(self, name, attrs):
self.current_element = name
def endElement(self, name):
if name == 'book':
print(f'Title: {self.title}')
print(f'Author: {self.author}')
print(f'Year: {self.year}')
print(f'Price: {self.price}')
self.title = ''
self.author = ''
self.year = ''
self.price = ''
def characters(self, content):
if self.current_element == 'title':
self.title = content
elif self.current_element == 'author':
self.author = content
elif self.current_element == 'year':
self.year = content
elif self.current_element == 'price':
self.price = content
# 解析XML文档
handler = BookHandler()
xml.sax.parseString(xml, handler)
在上面的示例中,我们首先定义一个XML文档,并定义一个处理器类。然后,我们使用xml.sax.parseString方法解析文档,并将处理器类作为参数传递。在处理器类中,我们定义了startElement、endElement和characters方法,用于处理XML元素和内容。最后,我们使用print函数输出结果。
总结
Python提供了多种解析XML的方法,包括ElementTree、minidom和SAX等。使用ElementTree可以轻松地解析XML文档,并从中提取所需的数据。使用SAX可以逐行解析XML文档,并在解析过程中处理元素和内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python如何对XML 解析 - Python技术站