Python xml.etree
API中的ElementTree类有一个write()
方法,用于记录可选的method
参数:
*method* -- either "xml" (default), "html, "text", or "c14n"
至少使用Python 3.5(在Fedora 25上)只需使用此方法编写
import xml.etree.ElementTree as ET
# ... create some elements ...
tree = ET.ElementTree(root)
tree.write(filename, method='c14n')
只抛出一个ValueError:
File "/usr/lib64/python3.5/xml/etree/ElementTree.py", line 751, in write
raise ValueError("unknown method %r" % method)
ValueError: unknown method 'c14n'
ElementTree代码包含此注释:
_serialize = {
"xml": _serialize_xml,
"html": _serialize_html,
"text": _serialize_text,
# this optional method is imported at the end of the module
# "c14n": _serialize_c14n,
}
究竟是什么意思?
如何在Python中将ElementTree序列化为c14n XML文件?
答案 0 :(得分:2)
C14N序列化只是作为Fredrik Lundh开发的原始ElementTree独立库的实验扩展实现的,并且从未成为正式版本的一部分。
当库的1.3分支导入Python标准库时,包含了可选库的支持代码,但C14N序列化从未如此。稍后在可选组件导入代码was removed altogether上,但代码中仍然提到了几个C14N。但是,文档从未提及C14N,其余的提及应该从Python中删除。
但是,如果必须使其正常工作,则可以始终download the original ElementC14N.py
module,并更新此项以使用当前的ElementTree库。这确实需要一些工作;代码库是特定于Python 2的,需要更新才能处理Unicode。