关于“python与xml数据的交互详解”这一主题,我会从以下几个方面进行讲解:解析XML数据、生成XML数据、XML与Python数据的转换、实例说明。下面我们逐一来看。
解析XML数据
在Python中,解析XML数据可使用xml.etree.ElementTree
模块。它提供了从字符串、文件和URL读取XML数据的方法,并将解析结果转换为Element对象的集合。以下是使用该模块解析XML数据的示例代码:
import xml.etree.ElementTree as ET
# 从字符串解析XML数据
data = '<root><item id="1" name="apple"/><item id="2" name="banana"/></root>'
root = ET.fromstring(data)
# 遍历解析结果
for item in root:
print(item.attrib['id'], item.attrib['name'])
# 从文件解析XML数据
tree = ET.parse('data.xml')
root = tree.getroot()
# 遍历解析结果
for item in root:
print(item.attrib['id'], item.attrib['name'])
生成XML数据
使用xml.etree.ElementTree
模块可以生成XML数据,首先需要创建Element对象,然后添加子Element和属性。当创建完XML数据后,使用ElementTree
的write()
方法将XML数据写入文件中。以下是使用该模块生成XML数据的示例代码:
import xml.etree.ElementTree as ET
# 创建根节点
root = ET.Element('root')
# 创建子节点
item1 = ET.SubElement(root, 'item', {'id': '1', 'name': 'apple'})
item2 = ET.SubElement(root, 'item', {'id': '2', 'name': 'banana'})
# 将Element对象写入文件
tree = ET.ElementTree(root)
tree.write('data.xml', encoding='utf-8')
XML与Python数据的转换
使用xml.etree.ElementTree
模块可以实现XML数据与Python数据的转换。Element
对象可以通过tostring()
方法转换为XML字符串,也可以使用fromstring()
方法将XML字符串解析为Element
对象;Element
对象也可以通过iter()
方法转换为Python数据,也可以使用Python数据初始化Element
对象。以下是使用该模块进行转换示例代码:
import xml.etree.ElementTree as ET
import pprint
# 将Element对象转换为XML字符串
root = ET.Element('root')
item = ET.SubElement(root, 'item', {'id': '1', 'name': 'apple'})
data = ET.tostring(root)
print(data)
# 将XML字符串转化为Python数据
root = ET.fromstring(data)
print(type(root))
# 将Element对象转换为Python数据
root = ET.Element('root')
item1 = ET.SubElement(root, 'item', {'id': '1', 'name': 'apple'})
item2 = ET.SubElement(root, 'item', {'id': '2', 'name': 'banana'})
pprint.pprint(root.iter())
# 将Python数据转换为Element对象
data = {'root': {'item': [{'name': 'apple', 'id': '1'}, {'name': 'banana', 'id': '2'}]}}
root = ET.Element('root')
for item in data['root']['item']:
ET.SubElement(root, 'item', item)
pprint.pprint(root.iter())
实例说明
以下是一个关于解析XML数据的示例,假设我们有一个XML文件data.xml
,其中包含了一组书籍数据,需要读取并输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
</book>
<book category="web">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
</book>
<book category="web">
<title lang="en">Python Web Development with Django®</title>
<author>Jeff Forcier</author>
<author>Paul Bissex</author>
<author>Wesley Chun</author>
<year>2008</year>
</book>
</bookstore>
使用以下代码可以解析XML数据:
import xml.etree.ElementTree as ET
tree = ET.parse('data.xml')
root = tree.getroot()
for book in root.findall('book'):
category = book.attrib['category']
title = book.find('title').text
author = book.find('author').text
year = book.find('year').text
print('Category: {0}, Title: {1}, Author: {2}, Year: {3}'.format(category, title, author, year))
输出结果:
Category: children, Title: Harry Potter, Author: J K. Rowling, Year: 2005
Category: web, Title: Learning XML, Author: Erik T. Ray, Year: 2003
Category: web, Title: Python Web Development with Django®, Author: Jeff Forcier, Year: 2008
以上是Python与XML数据的交互详解的完整攻略,如果您还有其他疑问,请随时与我联系。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python与xml数据的交互详解 - Python技术站