首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ElementTree编写为规范化的XML (c14n)

将ElementTree编写为规范化的XML (c14n)
EN

Stack Overflow用户
提问于 2017-04-20 19:12:09
回答 1查看 1.6K关注 0票数 4

Python中的ElementTree类有一个write()方法,用于记录可选的method参数:

代码语言:javascript
复制
*method* -- either "xml" (default), "html, "text", or "c14n"

至少用Python3.5(在Fedora 25上)用这种方法编写

代码语言:javascript
复制
import xml.etree.ElementTree as ET
# ... create some elements ...
tree = ET.ElementTree(root)
tree.write(filename, method='c14n')

只是抛出一个ValueError:

代码语言:javascript
复制
File "/usr/lib64/python3.5/xml/etree/ElementTree.py", line 751, in write
  raise ValueError("unknown method %r" % method)
ValueError: unknown method 'c14n'

ElementTree代码包含以下说明:

代码语言:javascript
复制
_serialize = {
    "xml": _serialize_xml,
    "html": _serialize_html,
    "text": _serialize_text,
# this optional method is imported at the end of the module
#   "c14n": _serialize_c14n,
}

这到底是什么意思?

如何在ElementTree中将c14n序列化为c14n XML文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 13:23:01

C14N序列化只是作为最初的ElementTree独立库的一个实验性扩展来实现的,这个库是由Fredrik开发的,从来没有正式发布过。

当将库的1.3分支导入Python库时,包含了对可选库的支持代码,但C14N序列化从未被包括在内。稍后,在可选组件导入代码被完全移除上,但是代码中仍然有几处提到了C14N。但是,文档从未提到过C14N,其余的提到应该从Python中删除。

但是,如果必须使其工作,则可以始终使用模块,并将其更新为与当前的ElementTree库一起工作。这确实需要一些工作;代码库是Python 2特定的,需要更新以处理Unicode。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43527996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档