生成 XML 文件在 Python 中是一项非常常见的任务。使用 Python 的 dom 模块可以轻松地构建 XML 文档。制作 XML 文档通常涉及以下步骤:
- 创建 XML 文档对象
- 创建元素节点,并将它们添加到文档中
- 将文档写入文件或打印到控制台
下面我们来看看如何使用 Python dom 模块创建 XML 文件。
创建 XML 文件对象
要使用 dom 模块创建 XML 文件对象,我们需要首先导入 dom 模块和 minidom 类。然后使用 minidom 类的 Document() 方法创建 XML 文件对象。下面是代码示例:
from xml.dom import minidom
# 创建 XML 文档对象
xml_doc = minidom.Document()
创建元素节点
在 XML 文件中,我们使用元素节点表示标记或标记之间的文本。要在 Python 中创建元素节点,我们使用 XML 文档对象的 createElement() 方法创建元素节点。然后使用元素节点的 appendChild() 方法将它们添加到文档中。下面是代码示例:
# 创建根元素节点
root_element = xml_doc.createElement("root")
xml_doc.appendChild(root_element)
# 创建子元素节点
child_element = xml_doc.createElement("child")
root_element.appendChild(child_element)
# 添加文本
text_node = xml_doc.createTextNode("This is a child node.")
child_element.appendChild(text_node)
将 XML 文档写入文件
要将 XML 文档写入文件中,我们需要使用 XML 文档对象的 toprettyxml() 方法创建一个可打印的字符串,然后将其写入文件。下面是代码示例:
# 将 XML 文档写入文件
with open("example.xml", "w") as f:
f.write(xml_doc.toprettyxml(indent=" ").encode("utf-8"))
以上代码将生成以下 XML 文件:
<?xml version="1.0" ?>
<root>
<child>This is a child node.</child>
</root>
示例1
例如,我们要创建一个名为 books.xml 的 XML 文件,其中包含几本书的信息,如书名、作者和出版日期。下面是代码示例:
from xml.dom import minidom
# 创建 XML 文档对象
xml_doc = minidom.Document()
# 创建根元素节点
bookstore = xml_doc.createElement("bookstore")
xml_doc.appendChild(bookstore)
# 添加一本书
book1 = xml_doc.createElement("book")
bookstore.appendChild(book1)
title1 = xml_doc.createElement("title")
title1_text = xml_doc.createTextNode("The Cat in the Hat")
title1.appendChild(title1_text)
book1.appendChild(title1)
author1 = xml_doc.createElement("author")
author1_text = xml_doc.createTextNode("Dr. Seuss")
author1.appendChild(author1_text)
book1.appendChild(author1)
publish_date1 = xml_doc.createElement("publish_date")
publish_date1_text = xml_doc.createTextNode("1957")
publish_date1.appendChild(publish_date1_text)
book1.appendChild(publish_date1)
# 添加另外两本书
book2 = xml_doc.createElement("book")
bookstore.appendChild(book2)
title2 = xml_doc.createElement("title")
title2_text = xml_doc.createTextNode("Harry Potter and the Sorcerer's Stone")
title2.appendChild(title2_text)
book2.appendChild(title2)
author2 = xml_doc.createElement("author")
author2_text = xml_doc.createTextNode("J.K. Rowling")
author2.appendChild(author2_text)
book2.appendChild(author2)
publish_date2 = xml_doc.createElement("publish_date")
publish_date2_text = xml_doc.createTextNode("1997")
publish_date2.appendChild(publish_date2_text)
book2.appendChild(publish_date2)
book3 = xml_doc.createElement("book")
bookstore.appendChild(book3)
title3 = xml_doc.createElement("title")
title3_text = xml_doc.createTextNode("The Lord of the Rings")
title3.appendChild(title3_text)
book3.appendChild(title3)
author3 = xml_doc.createElement("author")
author3_text = xml_doc.createTextNode("J.R.R. Tolkien")
author3.appendChild(author3_text)
book3.appendChild(author3)
publish_date3 = xml_doc.createElement("publish_date")
publish_date3_text = xml_doc.createTextNode("1954")
publish_date3.appendChild(publish_date3_text)
book3.appendChild(publish_date3)
# 将 XML 文档写入文件
with open("books.xml", "w") as f:
f.write(xml_doc.toprettyxml(indent=" ").encode("utf-8"))
以上代码将生成以下 books.xml 文件:
<?xml version="1.0" ?>
<bookstore>
<book>
<title>The Cat in the Hat</title>
<author>Dr. Seuss</author>
<publish_date>1957</publish_date>
</book>
<book>
<title>Harry Potter and the Sorcerer's Stone</title>
<author>J.K. Rowling</author>
<publish_date>1997</publish_date>
</book>
<book>
<title>The Lord of the Rings</title>
<author>J.R.R. Tolkien</author>
<publish_date>1954</publish_date>
</book>
</bookstore>
示例2
例如,我们要创建一个名为 people.xml 的 XML 文件,其中包含多个人的信息,如姓名、性别和年龄。下面是代码示例:
from xml.dom import minidom
# 创建 XML 文档对象
xml_doc = minidom.Document()
# 创建根元素节点
people = xml_doc.createElement("people")
xml_doc.appendChild(people)
# 添加一个人
person1 = xml_doc.createElement("person")
people.appendChild(person1)
name1 = xml_doc.createElement("name")
name1_text = xml_doc.createTextNode("Alice")
name1.appendChild(name1_text)
person1.appendChild(name1)
gender1 = xml_doc.createElement("gender")
gender1_text = xml_doc.createTextNode("female")
gender1.appendChild(gender1_text)
person1.appendChild(gender1)
age1 = xml_doc.createElement("age")
age1_text = xml_doc.createTextNode("25")
age1.appendChild(age1_text)
person1.appendChild(age1)
# 添加另外两个人
person2 = xml_doc.createElement("person")
people.appendChild(person2)
name2 = xml_doc.createElement("name")
name2_text = xml_doc.createTextNode("Bob")
name2.appendChild(name2_text)
person2.appendChild(name2)
gender2 = xml_doc.createElement("gender")
gender2_text = xml_doc.createTextNode("male")
gender2.appendChild(gender2_text)
person2.appendChild(gender2)
age2 = xml_doc.createElement("age")
age2_text = xml_doc.createTextNode("30")
age2.appendChild(age2_text)
person2.appendChild(age2)
person3 = xml_doc.createElement("person")
people.appendChild(person3)
name3 = xml_doc.createElement("name")
name3_text = xml_doc.createTextNode("Cathy")
name3.appendChild(name3_text)
person3.appendChild(name3)
gender3 = xml_doc.createElement("gender")
gender3_text = xml_doc.createTextNode("female")
gender3.appendChild(gender3_text)
person3.appendChild(gender3)
age3 = xml_doc.createElement("age")
age3_text = xml_doc.createTextNode("40")
age3.appendChild(age3_text)
person3.appendChild(age3)
# 将 XML 文档写入文件
with open("people.xml", "w") as f:
f.write(xml_doc.toprettyxml(indent=" ").encode("utf-8"))
以上代码将生成以下 people.xml 文件:
<?xml version="1.0" ?>
<people>
<person>
<name>Alice</name>
<gender>female</gender>
<age>25</age>
</person>
<person>
<name>Bob</name>
<gender>male</gender>
<age>30</age>
</person>
<person>
<name>Cathy</name>
<gender>female</gender>
<age>40</age>
</person>
</people>
以上是使用 Python 中的 dom 模块生成 XML 文件的示例及步骤详解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中使用dom模块生成XML文件示例 - Python技术站