来源
http://zq.zjdulou.com
http://mm.zjdulou.com
http://help.zjdulou.com
http://shop.zjdulou.com
http://dev.zjdulou.com XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它被设计成具有自我描述性,使用标签定义数据结构。XML广泛应用于配置文件、Web服务、数据交换等场景。
Python标准库的一部分,简单高效,是处理XML的首选工具。
优点:内存占用小,API简洁,支持XPath查询
文档对象模型(DOM)的轻量级实现,适合小型XML文档。
优点:符合W3C DOM规范,支持完整的DOM操作
lxml:功能强大,性能优异,支持XSLT和XPath
xmltodict:将XML转换为Python字典
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>王伟</author>
<title>Python编程入门</title>
<price>49.99</price>
</book>
<book id="bk102">
<author>张丽</author>
<title>XML数据处理实战</title>
<price>55.50</price>
</book>
</catalog>import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('books.xml')
root = tree.getroot()
# 遍历所有book元素
print("图书目录:")
for book in root.findall('book'):
book_id = book.get('id')
author = book.find('author').text
title = book.find('title').text
price = book.find('price').text
print(f"ID: {book_id}")
print(f"标题: {title}")
print(f"作者: {author}")
print(f"价格: {price}元")
print("-" * 30)图书目录:
ID: bk101
标题: Python编程入门
作者: 王伟
价格: 49.99元
------------------------------
ID: bk102
标题: XML数据处理实战
作者: 张丽
价格: 55.50元
------------------------------import xml.etree.ElementTree as ET
# 创建根元素
root = ET.Element("catalog")
# 创建第一个book元素
book1 = ET.SubElement(root, "book")
book1.set("id", "bk201")
ET.SubElement(book1, "author").text = "李强"
ET.SubElement(book1, "title").text = "Python高级编程"
ET.SubElement(book1, "price").text = "79.99"
# 创建第二个book元素
book2 = ET.SubElement(root, "book")
book2.set("id", "bk202")
ET.SubElement(book2, "author").text = "刘芳"
ET.SubElement(book2, "title").text = "XML与Web服务"
ET.SubElement(book2, "price").text = "65.00"
# 创建ElementTree对象
tree = ET.ElementTree(root)
# 写入文件(格式化输出)
ET.indent(tree, space=" ", level=0)
tree.write("new_books.xml", encoding="utf-8", xml_declaration=True)<?xml version='1.0' encoding='utf-8'?>
<catalog>
<book id="bk201">
<author>李强</author>
<title>Python高级编程</title>
<price>79.99</price>
</book>
<book id="bk202">
<author>刘芳</author>
<title>XML与Web服务</title>
<price>65.00</price>
</book>
</catalog>import xml.etree.ElementTree as ET
tree = ET.parse('books.xml')
root = tree.getroot()
# 更新第一本书的价格
for book in root.findall('book'):
if book.get('id') == 'bk101':
price_elem = book.find('price')
# 将价格提高10%
new_price = float(price_elem.text) * 1.1
price_elem.text = f"{new_price:.2f}"
# 添加折扣属性
book.set('discount', '10%')
# 添加新书
new_book = ET.SubElement(root, "book")
new_book.set("id", "bk103")
ET.SubElement(new_book, "author").text = "陈明"
ET.SubElement(new_book, "title").text = "Python数据分析"
ET.SubElement(new_book, "price").text = "89.90"
# 保存修改
tree.write('updated_books.xml', encoding='utf-8', xml_declaration=True)# 查找所有价格大于50的书
expensive_books = root.findall(".//book[price>50]")
# 查找特定作者的书
author_books = root.findall(".//book[author='张丽']")
# 获取所有标题
titles = [book.find('title').text for book in root.findall('book')]ET.register_namespace('ns', 'http://example.com')root.findall('ns:element',
{'ns': 'http://example.com'})通过本教程,您已经掌握了Python处理XML数据的核心技能。XML作为通用的数据交换格式,在配置文件、Web服务和数据存储等场景中广泛应用。现在就开始使用Python处理您的XML数据吧!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。