I have 4000+ key-values records in REDIS. My XML file to server should be like:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="Address">Address</string>
<string name="AppName">App</string>
</resources>
I need to generate XML file with all values I can get from DB (the number may be different). All examples I saw before were with pre-defined structure - it is always known in advance how many rows there will be. But in my case it is always different number. How to generate XML file "with cycle"?
You can use 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'))
Your template.xml file :
<?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>