在Python中,我需要规范化(c14n)一个XML字符串。
我可以使用哪个模块/软件包?我该怎么做?
(我更喜欢使用默认的python 2.7模块,没有额外的安装或补丁。)
有关参考,请参阅:http://www.w3.org/TR/xml-exc-c14n/
来自http://www.decalage.info/en/python/lxml-c14n
lxml提供了一种在python中执行c14n的非常简单的方法。<..>
下面是一个示例,展示了如何使用lxml 2.1:执行C14N
import lxml.etree as ET
et = ET.parse('file.xml')
output = StringIO.StringIO()
et.write_c14n(output)
print output.getvalue()
来自lxml文档:
write_c14n(self,file,exclusive=False,with_comments=True,压缩=0,inclusive_ns_prefix=无)
C14N文件的编写。始终写入UTF-8。
<..>
还有libxml2:
XML C14N 1.0版提供了两个选项可能性(参见http://www.w3.org/TR/xml-c14n和http://www.w3.org/TR/xml-exc-c14n/):
- 包含或排除C14N
- 有或无评论
libxml2允许在其C14N API中访问这些选项:http://xmlsoft.org/html/libxml-c14n.html
尽管必须检查这两个库中的版本更改。
现在在python 3中,您可以这样编写代码:
import lxml.etree as ET
et = ET.parse('your_xml_file_that_you_want_to_canonicalize.xml')
et.write_c14n("your_result_will_be_in_this_file.xml")