下面我来详细讲解“Python实现的读取/更改/写入xml文件操作示例”的完整攻略。
1. 什么是XML
XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言,它可以表示任何类型的数据,例如文本、图像、音频等等。XML 是一种类似于 HTML 的标记语言,但与 HTML 不同,它没有预定义的标签,而是可以根据需要定义自己的标签。
2. Python读取xml文件的模块
Python提供了很多模块来读写XML文件, 常用的有两种,分别是xml和ElementTree。
-
xml模块: xml模块主要提供了两个类,ElementTree和Element。ElementTree用于解析XML文件,而Element用于创建XML节点。
-
ElementTree模块: ElementTree是Python常用的解析XML文件的模块,它支持XPath和命名空间,使用比较方便。
3. Python读取XML文件操作示例
下面我给出一个Python的XML文件读取实例, 该XML文件的示例代码为:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
<book category="web">
<title lang="en">Python for web developers</title>
<author>Giacomo Bacci, Alessandro Molina</author>
<year>2008</year>
<price>49.99</price>
</book>
</bookstore>
import xml.etree.ElementTree as ET
tree = ET.parse('books.xml')
root = tree.getroot()
# 遍历XML文件
for child in root:
print(child.tag, child.attrib)
for sub_child in child:
print(sub_child.tag, sub_child.text)
运行上面的代码会得到以下结果:
book {'category': 'children'}
title Harry Potter
author J.K. Rowling
year 2005
price 29.99
book {'category': 'web'}
title Learning XML
author Erik T. Ray
year 2003
price 39.95
book {'category': 'web'}
title Python for web developers
author Giacomo Bacci, Alessandro Molina
year 2008
price 49.99
4. Python修改XML文件操作示例
下面我给出一个Python的XML文件修改实例, 假设要把第二本书(title为'Learning XML')的价格改为$49.99。代码如下:
import xml.etree.ElementTree as ET
tree = ET.parse('books.xml')
root = tree.getroot()
# 修改XML文件
for book in root.findall("./book[@category='web']"):
title = book.find('title').text
if title == 'Learning XML':
book.find('price').text = '49.99'
tree.write('books.xml')
运行上面的代码会修改XML文件,然后将修改后的结果存储到books.xml中。如果我们再次运行Python读取XML文件操作示例中的代码,输出结果如下:
book {'category': 'children'}
title Harry Potter
author J.K. Rowling
year 2005
price 29.99
book {'category': 'web'}
title Learning XML
author Erik T. Ray
year 2003
price 49.99
book {'category': 'web'}
title Python for web developers
author Giacomo Bacci, Alessandro Molina
year 2008
price 49.99
我们可以看到,第二本书的价格已经改为$49.99。
5. Python写入XML文件操作示例
下面我给出一个Python的XML文件写入实例, 假设我们要创建一个新的XML文件,并将数据写入该文件。代码如下:
import xml.etree.ElementTree as ET
# 创建XML文件
root = ET.Element("bookstore")
# 添加book实例
book1 = ET.SubElement(root, "book")
book1.set("category", "children")
title1 = ET.SubElement(book1, "title")
title1.set("lang", "en")
title1.text = "Harry Potter"
author1 = ET.SubElement(book1, "author")
author1.text = "J.K. Rowling"
year1 = ET.SubElement(book1, "year")
year1.text = "2005"
price1 = ET.SubElement(book1, "price")
price1.text = "29.99"
book2 = ET.SubElement(root, "book")
book2.set("category", "web")
title2 = ET.SubElement(book2, "title")
title2.set("lang", "en")
title2.text = "Learning XML"
author2 = ET.SubElement(book2, "author")
author2.text = "Erik T. Ray"
year2 = ET.SubElement(book2, "year")
year2.text = "2003"
price2 = ET.SubElement(book2, "price")
price2.text = "39.95"
# 将XML写入文件
xml_str = ET.tostring(root, encoding='utf-8')
with open("new_books.xml", "wb") as f:
f.write(xml_str)
上面的代码创建了一个新的XML文件,并将数据写入该文件。如果我们再次运行Python读取XML文件操作示例中的代码,输出结果和之前使用的books.xml文件相同。
总结
通过上述示例,我们可以看到Python处理XML文件的操作十分简单。使用Python的xml或ElementTree模块可以轻松读取、修改和创建XML文件,为我们的数据处理提供了便利。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现的读取/更改/写入xml文件操作示例 - Python技术站