xml.dom.minidom是Python标准库中用于DOM方式处理XML的模块,通过它可以灵活创建XML文档的各个组成部分,包括根节点、子节点、属性、文本内容等,适合需要自定义生成XML结构的场景。

xml.dom.minidom创建XML的核心步骤
使用xml.dom.minidom创建XML的核心逻辑是先创建文档对象,再逐步添加各个层级的节点,最后输出为字符串或者写入文件。整体流程可以分为以下几步:
- 导入xml.dom.minidom模块
- 创建空白的Document对象
- 创建根节点并添加到文档中
- 按需创建子节点、设置节点属性、添加文本节点
- 将节点挂载到对应的父节点上
- 生成XML字符串或者写入文件
基础XML创建示例
下面是一个创建简单学生信息XML的示例,包含根节点、子节点和文本内容:
import xml.dom.minidom
# 创建空白文档对象
doc = xml.dom.minidom.Document()
# 创建根节点student
root = doc.createElement("student")
doc.appendChild(root)
# 创建子节点name并添加文本内容
name_node = doc.createElement("name")
name_text = doc.createTextNode("张三")
name_node.appendChild(name_text)
root.appendChild(name_node)
# 创建子节点age并添加文本内容
age_node = doc.createElement("age")
age_text = doc.createTextNode("20")
age_node.appendChild(age_text)
root.appendChild(age_node)
# 生成格式化的XML字符串
xml_str = doc.toprettyxml(indent=" ")
print(xml_str)
# 写入到文件
with open("student.xml", "w", encoding="utf-8") as f:
f.write(xml_str)
运行上述代码后,输出的XML内容如下:
<?xml version="1.0" ?> <student> <name>张三</name> <age>20</age> </student>
添加节点属性和嵌套结构
实际的XML结构往往更复杂,可能需要给节点添加属性,或者存在多层嵌套的子节点。下面的示例展示如何创建带属性和嵌套层级的学生列表XML:
import xml.dom.minidom
doc = xml.dom.minidom.Document()
# 创建根节点students
root = doc.createElement("students")
doc.appendChild(root)
# 创建第一个student节点,添加id属性
student1 = doc.createElement("student")
student1.setAttribute("id", "001")
root.appendChild(student1)
# 给student1添加子节点
name1 = doc.createElement("name")
name1.appendChild(doc.createTextNode("李四"))
student1.appendChild(name1)
score1 = doc.createElement("score")
score1.appendChild(doc.createTextNode("95"))
student1.appendChild(score1)
# 创建第二个student节点,添加id属性
student2 = doc.createElement("student")
student2.setAttribute("id", "002")
root.appendChild(student2)
name2 = doc.createElement("name")
name2.appendChild(doc.createTextNode("王五"))
student2.appendChild(name2)
score2 = doc.createElement("score")
score2.appendChild(doc.createTextNode("88"))
student2.appendChild(score2)
# 输出格式化后的XML
xml_result = doc.toprettyxml(indent=" ", encoding="utf-8").decode("utf-8")
print(xml_result)
生成的XML结构如下:
<?xml version="1.0" encoding="utf-8"?>
<students>
<student id="001">
<name>李四</name>
<score>95</score>
</student>
<student id="002">
<name>王五</name>
<score>88</score>
</student>
</students>
常见问题说明
XML声明和编码设置
使用toprettyxml方法时,可以通过encoding参数指定XML的编码格式,默认情况下生成的XML声明会包含对应的编码信息。如果需要自定义XML声明,可以手动拼接声明字符串再拼接文档内容。
避免空行问题
默认生成的XML中可能会存在多余的空行,这是因为toprettyxml的缩进规则导致的。如果需要更紧凑的格式,可以调整indent参数,或者在生成后手动处理空行。
特殊字符处理
当文本内容中包含<、>、&等特殊字符时,xml.dom.minidom会自动进行转义,不需要开发者手动处理,避免生成的XML出现格式错误。
需要注意的是,xml.dom.minidom适合处理小型XML文档的创建,如果需要处理大体积的XML生成,建议选择更高效的流式生成方式,避免占用过多内存。
xml.dom.minidomPythonXML创建DOM操作修改时间:2026-06-21 04:33:30