Python中使用dom模块生成XML文件示例

生成 XML 文件在 Python 中是一项非常常见的任务。使用 Python 的 dom 模块可以轻松地构建 XML 文档。制作 XML 文档通常涉及以下步骤:

  1. 创建 XML 文档对象
  2. 创建元素节点,并将它们添加到文档中
  3. 将文档写入文件或打印到控制台

下面我们来看看如何使用 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技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Mybatis的mapper.xml中if标签test判断的用法说明

    Mybatis的mapper.xml中if标签test判断非常常用,用于根据条件动态拼接sql语句。下面我将详细讲解该标签的用法。 基本用法 在mapper.xml中,可以使用if标签来添加条件判断,语法如下: <select id="selectUserByCondition" parameterType="map&qu…

    html 2023年5月30日
    00
  • 使用Hibernate根据实体类自动生成表的方法

    使用Hibernate根据实体类自动生成表的方法可以通过以下几个步骤实现: 1.添加Hibernate依赖 首先需要在项目中引入Hibernate的依赖。可以在项目的pom.xml中添加以下依赖: <dependency> <groupId>org.hibernate</groupId> <artifactId&gt…

    html 2023年5月31日
    00
  • html5 input属性使用示例

    HTML5为我们带来了很多新的表单属性,这里将会分享一些常见的input属性使用示例,并且演示如何使用这些属性。 1. placeholder属性 这个属性定义一个控件的预期值的一个提示文本,即控件的内容/值的预期格式或值,但不必是尖括号、括号之类的限定符或完整的文本格式。实现方式如下: <input type="text" pla…

    html 2023年5月30日
    00
  • Python操作lxml库实战之Xpath篇

    接下来我将为您详细讲解“Python操作lxml库实战之Xpath篇”的完整攻略。 Python操作lxml库实战之Xpath篇 前言 在网络爬虫的过程中,如果数据源网站不提供API,我们就需要通过解析HTML页面来获取我们所需的数据。而XPath则是非常适合用于解析HTML页面的一种语言。 本篇文章将会详细介绍如何使用Python中的lxml库和XPath…

    html 2023年5月30日
    00
  • CCT是什么币种?CCT币是碳交易货币吗?

    以下是“CCT是什么币种?CCT币是碳交易货币吗?”的完整攻略: CCT是什么币种?CCT币是碳交易货币吗? CCT是一种数字货币,全称为“CyberCTM”,是由CyberCTM Foundation发行的。CCT是基于区块链技术的数字货币,旨在为用户提供更快、更安全、更便捷的支付方式。CCT币不是碳交易货币,它与碳交易没有直接关系。 CCT的特点 CCT…

    html 2023年5月18日
    00
  • JS cookie中文乱码解决方法

    我来详细讲解一下JS cookie中文乱码解决方法的完整攻略。 什么是JS cookie? 在介绍解决方法之前,我们需要先了解什么是JS cookie。Cookie 指的是服务器发送到用户浏览器上的一小段信息,它会在浏览器中保存一段时间,并且每次用户访问同一页面时都会被发送给服务器,用于进行特定的功能,比如记住用户的登录状态。 在 JavaScript 中,…

    html 2023年5月31日
    00
  • 探讨PHP JSON中文乱码的解决方法详解

    针对“探讨PHP JSON中文乱码的解决方法详解”的完整攻略,我们可以从以下几个方面来进行讲解: 一、问题背景 首先,我们需要明确这个问题所涉及到的背景。当我们在使用PHP对数据进行JSON编码时,如果数据中涉及到了中文字符,有时候我们在通过前端接口进行数据访问时会发现中文字符出现乱码的情况。这是为什么呢?原因是由于中文字符在不同的编码形式下会对应不同的字节…

    html 2023年5月31日
    00
  • 你要知道IDEA的这些必备插件

    下面是关于”你要知道IDEA的这些必备插件”的完整攻略: 1. 前言 首先,需要明确IntelliJ IDEA是一款非常强大的Java开发工具,它可以提高你的开发效率,但是默认情况下并不包含所有你需要的功能。因此,我们需要安装插件来满足我们的需求。下面介绍一些我使用过的必备插件。 2.必备插件 2.1 Lombok Lombok是一种Java编写代码插件程序…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部