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日

相关文章

  • c#批量整理xml格式示例

    C#批量整理Xml格式示例攻略 在进行Xml数据处理时,经常需要将Xml文档格式化整理以便于阅读。这里提供C#代码示例,将目录中所有的Xml文件都进行格式化整理。 流程 获取目录下的所有Xml文件。 循环遍历每个Xml文件,读取内容并进行格式化处理。 将处理后的内容写回到原文件中。 代码示例 using System; using System.IO; us…

    html 2023年5月30日
    00
  • Chrome浏览器控制台console使用详解

    Chrome浏览器控制台console使用详解 控制台console是Chrome浏览器内置的强大工具,可以帮助开发者在调试过程中更方便地查看JavaScript代码的运行情况、分析和修改页面元素等。 打开控制台 在Chrome浏览器中,可以使用以下三种方式打开控制台: 右键菜单方式:在页面上右键点击,选择“检查”或“检查元素”,即可打开控制台。 快捷键方式…

    html 2023年5月30日
    00
  • otg功能是什么?手机otg功能怎么用?

    OTG功能是什么?手机OTG功能怎么用? OTG(On-The-Go)是一种USB标准,它允许设备在不需要计算机的情况下直接连接到其他设备。手机OTG功能是指手机可以通过OTG线连接到其他USB设备,例如U盘、鼠标、键盘等。以下是关于OTG功能的攻略,包括以下几个步骤: 步骤1:检查手机是否支持OTG功能 在使用手机OTG功能之前,您需要检查您的手机是否支持…

    html 2023年5月17日
    00
  • java中使用dom4j解析XML文件的方法教程

    下面是Java中使用DOM4J解析XML文件的方法教程的详细攻略: 1. 引入DOM4J依赖 首先需要在项目中引入DOM4J依赖,可以通过Maven或者其他方式进行引入。Maven引入DOM4J的方法如下: <dependency> <groupId>dom4j</groupId> <artifactId>do…

    html 2023年5月30日
    00
  • 小米 MIUI 音乐播放器 歌名 显示乱码的解决办法

    “小米 MIUI 音乐播放器 歌名 显示乱码的解决办法”攻略,可以按照以下步骤进行解决: 问题描述 在小米 MIUI 音乐播放器中,有时候会遇到乱码的问题,这种情况通常出现在歌曲名称、歌手名称等文本内容中。这使得用户无法正确识别歌曲信息,影响了用户体验。 解决办法 1. 修改音乐文件的元数据 这种乱码出现的原因很可能是音乐文件的元数据缺失或者无法正确解析导致…

    html 2023年5月31日
    00
  • HTML文本格式化

    HTML文本格式化是将HTML代码中的文本内容按照特定的格式进行展示,包括字体、颜色、对齐方式等。 HTML 中有许多用来格式化文本的标签,如下表所示: 标签 描述 <b>…</b> 加粗标签中的字体 <em>…</em> 强调标签中的内容,并使标签中的字体倾斜 <i>…</i&g…

    Web开发基础 2023年3月15日
    00
  • asp读取xml实例代码

    下面就是详细的“ASP读取XML实例代码”的攻略: 使用XML DOM(文档对象模型)读取XML文件 XML DOM是一种用于从XML文档中访问和处理节点的标准方式。在ASP中,通过使用XML DOM对象将XML文档加载到内存中,并读取或修改XML节点的值。 以下示例演示如何使用XML DOM在ASP中读取XML文件: Set xmlDoc = Server…

    html 2023年5月30日
    00
  • hbuilderx怎么开启显示换行符?hbuilderx开启显示换行符教程

    以下是“HBuilderX怎么开启显示换行符?HBuilderX开启显示换行符教程”的完整攻略: HBuilderX怎么开启显示换行符? 在HBuilderX中开启显示换行符,可以帮助用户更好地查看和编辑代码。以下是一些关于如何开启显示换行符的技巧和步骤,可以帮助用户更好地使用HBuilderX。 技巧1:使用快捷键 在HBuilderX中,用户可以使用快捷…

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