Python 将ElementTree写入规范化XML(c14n)
PythonPython 将ElementTree写入规范化XML(c14n),python,xml,fedora-25,c14n,Python,Xml,Fedora 25,C14n,Pythonxml.etreeAPI中的ElementTree类有一个write()方法,用于记录可选的method参数: *method* -- either "xml" (default), "html, "text", or "c14n" 至少在Python3.5(在Fedora25上)中,只是使用这种方法编写 import xml.etree.ElementTree as ET # ... create some elements ... tree = ET.ElementTree(r
xml.etree
API中的ElementTree类有一个write()
方法,用于记录可选的method
参数:
*method* -- either "xml" (default), "html, "text", or "c14n"
至少在Python3.5(在Fedora25上)中,只是使用这种方法编写
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文件?c14n序列化仅作为Fredrik Lundh开发的原始ElementTree独立库的实验性扩展实现,从未作为官方版本的一部分 当库的1.3分支被导入Python标准库时,包含了可选库的支持代码,但从未包含C14N序列化。稍后将介绍可选组件导入代码,但代码中仍多次提到C14N。但是,文档中从未提到过C14N,其余提到的内容应该从Python中删除 但是,如果必须让它工作,您可以随时更新它以使用当前的ElementTree库。这确实需要一些工作;代码库是特定于Python2的,需要更新以处理Unicode