我必须为压缩文件中的文件编写过滤器。所以我将zip文件作为输入,它包含一些xml类型的文件。我用xslt过滤xml。因此文件将被覆盖,最后再次压缩文件。我的代码如下所示:
问题:终止没有例外,但它不起作用。
from lxml import etree
from io import StringIO
import zipfile
def axlFilter(inputfile):
with zipfile.ZipFile(inputfile) as zip_file:
for file in zip_file.namelist():
try:
xslt_root = etree.XML('''\
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="TimeStamp"/>
<xsl:template match="@timeStamp"/>
<xsl:template match="TimeStamps"/>
<xsl:template match="Signature"/>
</xsl:stylesheet>
''')
transform = etree.XSLT(xslt_root)
doc = etree.parse(file)
result_tree = transform(doc)
resultfile = StringIO(unicode(str(result_tree)))
zipwrite.write_file(file, resultfile)
finally:
zip_file.close()