【发布时间】:2020-09-23 06:38:18
【问题描述】:
我有一个要写入 XML 文件的字符串列表。我的代码如下所示:
from jinja2 import Environment, PackageLoader, select_autoescape
import os
env = Environment(loader = PackageLoader(path),
autoescape = select_autoescape(['html', 'xml']))
list_data = ['<managedObject class="test" operation="test"/>', '<managedObject class="test" operation="test"/>']
template = env.get_template('template.xml')
output_from_parsed_template = template.render(scripts=list_data)
path = os.path.join("output_file.xml")
with open(str(path), "wb") as fh:
fh.write(output_from_parsed_template.encode('utf-8'))
我的 template.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
{% for script in scripts %}
{{ script }}
{% endfor %}
我在 output_file.xml 中收到以下错误:
<?xml version="1.0" encoding="UTF-8"?>
<managedObject class="test" operation="test"/>
<managedObject class="test" operation="test"/>
您知道如何在 XML 中编写所有特殊字符(双引号和 inf/supp 符号)吗? 我用同样的函数写一个txt文件,没有这个问题。
感谢您的帮助
【问题讨论】:
-
{{ script | safe }}- 这样 Jinja 将 XML/HTML 保持原样 - 无需转换为阻止黑客注入的更安全版本。 -
或者您应该删除
autoescape=以保持 XML/HTML 原样。