import pickle
import xml.etree.ElementTree as ET
# 假设这是复杂的Python对象
class CustomClass:
def __init__(self, value):
self.value = value
data = {
'custom_obj': CustomClass(42),
'nested_list': [[1, 2], {'sub_key': 'sub_value'}],
'nested_dict': {'key1': 'value1', 'key2': [3, 4]}
}
# 使用Pickle进行序列化并保存到文件
with open('data.pkl', 'wb') as f:
pickle.dump(data, f)
# 反序列化Pickle数据
with open('data.pkl', 'rb') as f:
unpickled_data = pickle.load(f)
# 将反序列化后的数据转换为XML
def to_xml(parent, data):
if isinstance(data, dict):
for key, value in data.items():
child = ET.SubElement(parent, key)
to_xml(child, value)
elif isinstance(data, list):
for item in data:
child = ET.SubElement(parent, 'item')
to_xml(child, item)
elif isinstance(data, CustomClass):
child = ET.SubElement(parent, 'CustomClass')
value_elem = ET.SubElement(child, 'value')
value_elem.text = str(data.value)
else:
parent.text = str(data)
root = ET.Element('root')
to_xml(root, unpickled_data)
xml_data = ET.tostring(root, encoding='utf8', method='xml')
print(xml_data.decode())