Python独有的XML规范化(xml-exc-c14n)

时间:2014-04-09 10:20:33

标签: python xml

在Python中,我需要Canonicalize(c14n)一个XML字符串。

我可以使用哪个模块/包?我应该怎么做?

(我更喜欢使用默认的python 2.7模块,没有额外的安装或补丁。)

参考:http://www.w3.org/TR/xml-exc-c14n/

1 个答案:

答案 0 :(得分:4)

来自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 docs:

  

write_c14n(self,file, exclusive = False ,with_comments = True,   compression = 0,inclusive_ns_prefixes = None)

     

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

虽然必须检查这两个库中的版本更改。