Python 提供了许多内置的模块来帮助我们序列化数据。在 Python 中,我们可以用xml包中的三个模块来解析和解码XML文件。这三个模块是xml.etree.ElementTree、xml.dom和xml.sax。
一、使用xml.etree.ElementTree
这是使用Python标准库中的xml.etree.ElementTree模块序列化数据到XML格式的一种方法。在这种方法中,我们可以使用ElementTree模块来创建XML树。
import xml.etree.ElementTree as ET
# 创建根元素
root = ET.Element("catalog")
# 子元素1
book = ET.SubElement(root, "book")
title = ET.SubElement(book, "title")
title.text = "The Adventures of Sherlock Holmes"
author = ET.SubElement(book, "author")
author.text = "Arthur Conan Doyle"
year = ET.SubElement(book, "year")
year.text = "1892"
# 子元素2
book = ET.SubElement(root, "book")
title = ET.SubElement(book, "title")
title.text = "The Hobbit"
author = ET.SubElement(book, "author")
author.text = "J.R.R. Tolkien"
year = ET.SubElement(book, "year")
year.text = "1937"
# 将根元素转换为xml树对象
tree = ET.ElementTree(root)
tree.write("books.xml")
执行以上Python代码后,将生成一个名为books.xml的文件,其内容如下:
<catalog>
<book>
<title>The Adventures of Sherlock Holmes</title>
<author>Arthur Conan Doyle</author>
<year>1892</year>
</book>
<book>
<title>The Hobbit</title>
<author>J.R.R. Tolkien</author>
<year>1937</year>
</book>
</catalog>
二、使用xml.dom
xml.dom是Python提供的基于DOM的XML解析库。通过使用这个库,我们可以执行以下操作:
- 创建一个新的XML Document
- 创建元素和文本节点,以填充XML文档
- 保存XML文档
import xml.dom.minidom
# 创建文档对象
xml_doc = xml.dom.minidom.Document()
# 创建根元素
root = xml_doc.createElement("books")
xml_doc.appendChild(root)
# 子元素1
book = xml_doc.createElement("book")
root.appendChild(book)
title = xml_doc.createElement("title")
title_text = xml_doc.createTextNode("The Adventures of Sherlock Holmes")
title.appendChild(title_text)
book.appendChild(title)
author = xml_doc.createElement("author")
author_text = xml_doc.createTextNode("Arthur Conan Doyle")
author.appendChild(author_text)
book.appendChild(author)
year = xml_doc.createElement("year")
year_text = xml_doc.createTextNode("1892")
year.appendChild(year_text)
book.appendChild(year)
# 子元素2
book = xml_doc.createElement("book")
root.appendChild(book)
title = xml_doc.createElement("title")
title_text = xml_doc.createTextNode("The Hobbit")
title.appendChild(title_text)
book.appendChild(title)
author = xml_doc.createElement("author")
author_text = xml_doc.createTextNode("J.R.R. Tolkien")
author.appendChild(author_text)
book.appendChild(author)
year = xml_doc.createElement("year")
year_text = xml_doc.createTextNode("1937")
year.appendChild(year_text)
book.appendChild(year)
# 将创建的XML文档写入文件
with open("books.xml", "w") as f:
f.write(xml_doc.toprettyxml())
执行以上Python代码后,将生成一个名为books.xml的文件,其内容如下:
<?xml version="1.0" ?>
<books>
<book>
<title>
The Adventures of Sherlock Holmes
</title>
<author>
Arthur Conan Doyle
</author>
<year>
1892
</year>
</book>
<book>
<title>
The Hobbit
</title>
<author>
J.R.R. Tolkien
</author>
<year>
1937
</year>
</book>
</books>
以上是两种将Python 数据序列化为XML格式的方法,适用于不同的情况。通过这些示例,我们可以了解到,Python 序列化数据为XML 的完整攻略实际上就是:构建XML元素树 -> 将元素树转换为XML字符串 -> 将XML字符串写入文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python 序列化数据为XML - Python技术站