XML-Dateien mit Python, pandas und Jinja2 befüllen
Angenommen, wir haben eine Excel-Datei Daten.xlsx
mit Werten, die in ein entsprechendes XML-Dokument überführt werden müssen.
Mit Python und der Jinja2 Template-Engine ist das flink gemacht. Zuerst definieren wir das Template template.xml
:
<?xml version='1.0' encoding='UTF-8'?> <table name="Tablename"> {% for _,row in data.iterrows() %} <ROW> <COLUMN1>{{row['column1']}}</COLUMN1> <COLUMN2>{{row['column2']}}</COLUMN2> <COLUMN3>{{row['column3']}}</COLUMN3> </ROW> {% endfor %} </table> |
Dann definieren wir den Python-Code:
import pandas as pd # data wrangling import jinja2 # template engine import os # for file-related stuff # create jinja env that can load template from filesystem jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(os.path.abspath('.'))) df = pd.read_excel('Daten.xlsx') template = jinja_env.get_template('template.xml') with open('FertigesXML.xml','w') as output: output.write(template.render(data=df)) |
Lassen wir den Python-Code laufen, so erhalten wir das folgende XML: