如何在没有预定义结构的情况下在 Python 中生成具有 "for" 构造的大型 XML 文件?
How to generate large XML file with "for" construction in Python without predefined structure?
我在 REDIS 中有 4000 多个键值记录。
我的 XML 文件到服务器应该是这样的:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="Address">Address</string>
<string name="AppName">App</string>
</resources>
我需要生成 XML 文件,其中包含我可以从数据库中获得的所有值(数字可能不同)。
我之前看到的所有示例都是预定义的结构——总是事先知道会有多少行。但就我而言,它总是不同的数字。如何生成XML文件"with cycle"?
你可以使用 jinja2 :
from jinja2 import Environment, PackageLoader, select_autoescape
import os
def write_xml(list_data):
env = Environment(
loader = PackageLoader('path', 'to', 'template', 'directory'),
autoescape = select_autoescape(['html', 'xml'])
)
template = env.get_template('template.xml')
output_from_parsed_template = template.render(values=list_data)
path = os.path.join("path", "to", "output")
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"?>
<resources>
{% for value in values %}
<string name="Address">{{ value.Address }}</string>
<string name="AppName">{{ value.App }}</string>
{% endfor %}
</resources>
我在 REDIS 中有 4000 多个键值记录。 我的 XML 文件到服务器应该是这样的:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="Address">Address</string>
<string name="AppName">App</string>
</resources>
我需要生成 XML 文件,其中包含我可以从数据库中获得的所有值(数字可能不同)。 我之前看到的所有示例都是预定义的结构——总是事先知道会有多少行。但就我而言,它总是不同的数字。如何生成XML文件"with cycle"?
你可以使用 jinja2 :
from jinja2 import Environment, PackageLoader, select_autoescape
import os
def write_xml(list_data):
env = Environment(
loader = PackageLoader('path', 'to', 'template', 'directory'),
autoescape = select_autoescape(['html', 'xml'])
)
template = env.get_template('template.xml')
output_from_parsed_template = template.render(values=list_data)
path = os.path.join("path", "to", "output")
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"?>
<resources>
{% for value in values %}
<string name="Address">{{ value.Address }}</string>
<string name="AppName">{{ value.App }}</string>
{% endfor %}
</resources>