python - 从模型数据生成 XML 文件

标签 python xml django serialization

我需要将模型数据(仅限 CharField)写入 XML 文件以包含 flash 文件的数据。我对此很陌生,在 Django 中执行此操作对我来说有点不清楚。我正在创建一个 xml 文件,然后将文本数据写入该文件(与 csv 模块一样,但写入 xml)。一个非常简化的 xml 文件应该会导致 flash 文件读取,即:

<?xml version="1.0" encoding="UTF-8"?>
<textFields>
     <textField id="0" text="HELLO WORLD" />
     <textField id="1" text="HELLO EARTH" />
     ...
</textFields>

1.我正在使用序列化程序从模型中写入 xml 数据:

from django.core import serializers
data = serializers.serialize('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))

2。然后我使用 core.files 创建文件:

from django.core.files import File    
f = open('/path/to/new/dir/content.xml', 'w')
myfile = File(f)

3。写入文件数据并关闭:

myfile.write(data)

myfile.close()

虽然 xml 输出包含对象“django-objects”等的字段,但到目前为止这仍然有效,我将不得不看看我是否可以在 ActionScript 中轻松地为 flash 文件解释它。我更愿意像在 csv 模块中那样手动定义 xml 字段名称。由于我是 django 和 python 的新手,我想知道是否有更简单、更简单的方法来做到这一点?

注意:在序列化程序中,我对模型对象使用过滤器,因为对模型实例使用get 会返回object not iterable 错误。事实上,我过滤了两次以获得单个实例,似乎必须有更好的方法。

最佳答案

这里有两种可能的解决方案:

1.

您可以扩展基础 django xml 序列化程序 (django.core.serializers.xml_serializer.Serializer) 并修改它,以便它返回您的结构中的数据。然后你可以运行 ex。

YourSerializer('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))

它会在你的结构中输出数据。

2.

编写简单的函数,使用您的数据结构呈现模板并以您的格式返回 xml 数据:

Python代码

from django.template.loader import render_to_string

def my_serialize(query_set):
    xml = render_to_string('xml_template.xml', {'query_set': query_set})

    return xml

模板 xml_template.xml

<?xml version="1.0" encoding="UTF-8"?>
<textFields>
     {% for object in query_set %}
     <textField id="{{ object.pk }}" text="{{ object.my_field }}" />
     {% endfor %}
</textFields>

关于python - 从模型数据生成 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3829442/

相关文章:

python - 如何在 Pandas 数据框中按值获取准确的行号和列号(即单元格地址)

java - 使用 JAXB 读取和写入 XML 文件时处理 org.xml.sax.SAXParseException

Python如何计算一个精确到小数的列表字符串?

python - 等到使用 Selenium WebDriver for python 完成任务

sql-server - 使用 T-SQL 有条件地删除 SQL Server 中 XML 字段中的 XML 元素

django - 将图像传递给 celery 任务

python - OOP 设计 - 在 Python 中,这是高质量的 OO 设计还是史诗般的失败?

Django 多个数据库 : choose db where syncdb creates tables

python - 如何在 Python 中将列表转换为嵌套字典

java - 从简单的编程指令生成抽象机器代码