Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将消息格式序列化为xml_Python_Xml_Xml Serialization - Fatal编程技术网

Python 将消息格式序列化为xml

Python 将消息格式序列化为xml,python,xml,xml-serialization,Python,Xml,Xml Serialization,我有一个python列表 [ (A,{'a':1,'b':2,'c':3,'d':4}), B,{'a':1,'b':2,'c':3,'d':4}), ... ] 我想知道是否有将此类列表序列化为xml的标准库,或者是否应该将其手工编码到文件中 编辑:添加了详细信息 假设这用于构造消息,以便 message=A(Feild属性{'A':1,'b':2,'c':3,'d':4})| b字段属性{'A':1,'b':2,'c':3,'d':4})| c字段

我有一个python列表

 [
     (A,{'a':1,'b':2,'c':3,'d':4}),
     B,{'a':1,'b':2,'c':3,'d':4}),
     ...
     ]
我想知道是否有将此类列表序列化为xml的标准库,或者是否应该将其手工编码到文件中

编辑:添加了详细信息

假设这用于构造消息,以便


message=A(Feild属性{'A':1,'b':2,'c':3,'d':4})| b字段属性{'A':1,'b':2,'c':3,'d':4})| c字段属性{'A':1,'b':2,'c':3,'d':4})

它需要是XML吗?这是
pickle
模块的常用域

但是,不存在将Python对象序列化到XML库的标准。(我有一个我不久前写的库,它还没有出版,更不用说“标准”了。)有像
lxml
这样的库,用于将XML转换为Python对象,以及用于读取XML的常用
sax
dom
expat
库。

  • 为什么要使用XML?通常有更好的解决方案,比如JSON,它具有很强的可移植性和标准性
  • 最简单的方法可能是使用YAML。YAML的主要表示形式不是XML,但有一种规范方法(YAXML)将YAML序列化数据表示为XML
将“使用json/yaml/whitespace”注释放在一边(我想你这样做是有原因的,而不是使用pickle/json)

您可以尝试非常pythonicelementtree库(在标准库中),甚至可以使用google的一些建议:搜索“将python字典转换为xml”

(不要听起来太粗鲁..眨眨眼)


看看你的例子,A和B是什么?整数?串?classmethods?

pickle
不安全,仅限于在单一语言中使用。几乎总是有更好的序列化选项。
ElementTree
确实是解析和编写XML最好的方法。特别是,解析它要比使用
sax
dom
好得多。它是一个消息模型,需要导出到Excel,因此需要使用XML。@anijhaw:考虑到这个限制,我可以说没有标准库。我甚至不确定您的示例如何构成“消息模型”。如果我试图导入Excel,我会使用
csv
库,然后使用Excel的csv导入。@Mike:没有指定安全性和语言独立性,后者要求输入比Python元组列表和给定的字典更通用<代码>pickle也只需很少的实现工作量就可以完成它的工作,远远低于不是标准模块的
元素树
。这就是为什么我想知道为什么需要XML。。。现在我们来了。您说要将它导入Excel,因此它需要是XML。它是否需要符合特定的格式,或者您可以提供任何格式的XML并从那里使用它?导入到Excel的XML意味着Excel的XML格式。(*.xlsx)由于涉及Excel。。。当你说
A
B
时,这些应该是行标签吗?
'a'
'b'
等是否为列标签?仍然没有解释将您的
消息=
行与Excel或XML关联。好的,a、b应为列标签,很难解释。在某种程度上,我自己解决了这个问题,但是通过手工编码XML,这几乎总是错误的。:)我检查了elementtree,这个列表给出了一个类中的元数据,这个类描述了一条消息,所以a、B、C是消息的字段,而Dictionary给出了一些特定于字段的值