Je dois écrire des données de modèle (CharField
uniquement) dans un fichier XML pour contenir les données d'un fichier Flash. Je suis nouveau à cela, et le processus est un peu flou pour moi de le faire en django. Je crée un fichier XML, puis j'écris les données textuelles dans le fichier (comme c'est le cas avec le module csv, mais avec xml). Un fichier XML très simplifié devrait en résulter pour le fichier flash à lire, à savoir:Générer un fichier XML à partir de données de modèle
<?xml version="1.0" encoding="UTF-8"?>
<textFields>
<textField id="0" text="HELLO WORLD" />
<textField id="1" text="HELLO EARTH" />
...
</textFields>
1. J'utilise un sérialiseur pour écrire les données XML du modèle:
from django.core import serializers
data = serializers.serialize('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))
2. Je puis créer un fichier en utilisant core.files
:
from django.core.files import File
f = open('/path/to/new/dir/content.xml', 'w')
myfile = File(f)
3. Ecrire des données de fichiers et à proximité:
myfile.write(data)
myfile.close()
Cela fonctionne jusqu'à présent, bien que la sortie xml contienne les champs pour l'objet "django-objects" etc, et je vais devoir voir si je peux interpréter cela en ActionScript facilement pour le fichier flash. Je préférerais définir manuellement les noms des champs xml comme dans le module csv. Comme je suis nouveau à django et python, je me demande s'il existe une façon plus simple et plus simple de faire cela?
Note: Dans sérialiseur j'utiliser le filtre sur les objets du modèle parce que l'utilisation get
pour l'instance de modèle renvoie une erreur object not iterable
. En fait, je le filtre deux fois pour obtenir une seule instance, il semble qu'il doit y avoir un meilleur moyen.
Je ne comprends pas le format XML que vous voulez. Un élément 'textField' est-il égal à une seule ligne dans la base de données, chacun avec un seul champ? Si oui, à quoi fait référence le numéro "id"? Si non, comment différenciez-vous les lignes? –
En outre, avez-vous considéré JSON comme un format de sérialisation? C'est beaucoup plus facile à créer et à consommer. –
Oui, textField est une seule entrée charField dans la base de données (chaque champ d'entrée db pour remplir un champ de texte dans un fichier Flash). Désolé, l'identifiant était un peu confus alors, l'idée est qu'il y a plusieurs champs de texte dans le fichier flash, donc les id correspondent à des charFields différents dans le modèle. Ils devraient être différents charFields de modèle. Im regardant dans JSON maintenant, normalement Ive utilisé XML avec AS3, il semble jusqu'à présent que JSON nécessiterait une importation de bibliothèque AS3, et pour cette application ce n'est pas une option malheureusement. – HdN8