如何在没有预定义结构的情况下在Python中使用“ for”构造生成大型XML文件?

时间:2018-08-08 12:51:11

标签: python xml xml-generation

我在REDIS中有4000多个键值记录。 我到服务器的XML文件应该是这样的:

public class HeaderPanel extends JPanel {

    public HeaderPanel() {
        setName("DefaultHeaderPanel"); // assign style name
    }
}

我需要生成具有我可以从数据库获得的所有值的XML文件(数量可能有所不同)。 我之前看到的所有示例都具有预定义的结构-始终预先知道将要有多少行。但就我而言,它始终是不同的数字。如何“带循环”生成XML文件?

1 个答案:

答案 0 :(得分:1)

您可以使用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>