当我们需要对XML数据进行操作时,可以使用Python中的DOM(文档对象模型)模块实现。DOM提供了基于树形结构对XML数据进行解析和操作的方法。
以下是基于DOM操作XML数据的示例过程。
1. 导入DOM模块
使用Python中的xml.dom.minidom
模块来解析和操作XML数据。因此,需要先导入该模块。
import xml.dom.minidom
2. 读取XML文件
使用xml.dom.minidom.parse()
方法读取XML文件,将其转换为DOM对象。
dom = xml.dom.minidom.parse('example.xml')
3. 获取根元素
使用DOM对象的documentElement
属性获取XML文档的根元素。
root = dom.documentElement
4. 获取子元素
使用DOM元素对象的getElementsByTagName()
方法获取指定标签的子元素。例如,获取所有<book>
元素:
books = root.getElementsByTagName('book')
5. 获取元素的属性和文本内容
使用DOM元素对象的getAttribute()
方法获取元素的指定属性值,使用childNodes
属性获取元素的子节点,使用nodeValue
属性获取节点的文本内容。
# 获取第一个book元素的title属性值
title = books[0].getAttribute('title')
# 获取第一个book元素的子元素的文本内容
author = books[0].getElementsByTagName('author')[0].childNodes[0].nodeValue
示例一: 修改XML元素的属性值
下面是一个修改XML元素属性值的示例。假设有一个example.xml
文件,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1" title="Python Programming" language="English">
<author>Guido van Rossum</author>
</book>
<book id="2" title="计算机网络" language="中文">
<author>Andrew Tanenbaum</author>
</book>
</books>
要将第二个<book>
元素的language
属性值修改为English
,可以使用以下代码:
import xml.dom.minidom
# 读取XML文件
dom = xml.dom.minidom.parse('example.xml')
# 获取根元素
root = dom.documentElement
# 获取所有的book元素
books = root.getElementsByTagName('book')
# 获取第二个book元素
book2 = books[1]
# 修改其language属性值
book2.setAttribute('language', 'English')
# 保存修改后的XML文档
with open('example.xml', 'w', encoding='UTF-8') as f:
dom.writexml(f, indent='', addindent='\t', newl='\n', encoding='UTF-8')
经过上述操作,example.xml
文件将被修改如下:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1" title="Python Programming" language="English">
<author>Guido van Rossum</author>
</book>
<book id="2" title="计算机网络" language="English">
<author>Andrew Tanenbaum</author>
</book>
</books>
示例二:向XML文件中添加新元素
下面是一个向XML文件中添加新元素的示例。假设有一个example.xml
文件,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1" title="Python Programming" language="English">
<author>Guido van Rossum</author>
</book>
<book id="2" title="计算机网络" language="中文">
<author>Andrew Tanenbaum</author>
</book>
</books>
要向该XML文档中添加一本新的书,可以使用以下代码:
import xml.dom.minidom
# 读取XML文件
dom = xml.dom.minidom.parse('example.xml')
# 获取根元素
root = dom.documentElement
# 创建新的book元素
new_book = dom.createElement('book')
# 设置其id、title和language属性值
new_book.setAttribute('id', '3')
new_book.setAttribute('title', 'Algorithms')
new_book.setAttribute('language', 'English')
# 创建新的author元素
new_author = dom.createElement('author')
# 设置其文本内容
new_author_text = dom.createTextNode('Thomas H. Cormen')
new_author.appendChild(new_author_text)
# 将新的author元素添加到new_book中
new_book.appendChild(new_author)
# 将new_book添加到根元素中
root.appendChild(new_book)
# 保存修改后的XML文档
with open('example.xml', 'w', encoding='UTF-8') as f:
dom.writexml(f, indent='', addindent='\t', newl='\n', encoding='UTF-8')
经过上述操作,example.xml
文件将被修改如下:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1" title="Python Programming" language="English">
<author>Guido van Rossum</author>
</book>
<book id="2" title="计算机网络" language="中文">
<author>Andrew Tanenbaum</author>
</book>
<book id="3" title="Algorithms" language="English">
<author>Thomas H. Cormen</author>
</book>
</books>
以上就是基于DOM操作XML数据的示例过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基于dom操作xml数据的方法示例 - Python技术站