详解Python 序列化数据为XML

  • Post category:Python

Python 中可以通过标准库中的 xml 模块将数据序列化为 XML 格式。

1. 将Python字典序列化为XML

示例代码如下:

import xml.etree.ElementTree as ET

data = {"person": {"name": "张三", "age": 18}}

root = ET.Element("root")
person = ET.SubElement(root, "person")
name = ET.SubElement(person, "name")
age = ET.SubElement(person, "age")

name.text = data["person"]["name"]
age.text = str(data["person"]["age"])

tree = ET.ElementTree(root)
tree.write("person.xml", encoding="utf-8")

解析:

  1. 引入xml.etree.ElementTree模块。
  2. 定义要序列化的Python 字典对象 data。
  3. 使用XML.etree.ElementTree模块定义根节点root,并创建子节点person、name、age。
  4. 将字典数据填充到各个标签内。
  5. 定义完毕后,用 ElementTree 类创建一个 ElementTree 对象 tree
  6. tree 输出为 person.xml 文件,编码为 utf-8

输出的 person.xml 文件内容如下:

<root>
  <person>
    <name>张三</name>
    <age>18</age>
  </person>
</root>

2. 将XML字符串反序列化为Python字典

示例代码如下:

import xml.etree.ElementTree as ET

data = '''<person>
            <name>张三</name>
            <age>18</age>
          </person>'''

root = ET.fromstring(data)
name = root.find("name").text
age = root.find("age").text

result = {"person": {"name": name, "age": int(age)}}
print(result)

解析:

  1. 定义XML字符串 data。
  2. 使用 ElementTree 模块中的 fromstring() 方法将字符串反序列化为 Element 对象 root。
  3. 使用标签名查找节点,获取标签内的文本内容。
  4. 将反序列化的结果以Python字典形式输出。

输出的结果为:

{'person': {'name': '张三', 'age': 18}}

以上就是Python序列化数据为XML的攻略,通过这两个示例,我们可以看到将Python数据序列化为XML及将XML反序列化为Python的实现方法,读者可以根据具体需求进行修改及应用。