У меня есть модель с несколькими полями, которые выглядят следующим образом:Подготовка данных XML для десериализации в Django
class XMLData(models.Model):
name = models.CharField()
description = models.CharField()
price = models.CharField()
и XML-данных, завернутые в строку, данные XML выглядеть следующим образом:
<Root>
<Header>
<information>info</information>
</Header>
<Main>
<Product>
<Name>name1</Name>
<Description>description1</Description>
<Price>1</Price>
</Product>
<Product>
<Name>name2</Name>
<Description>description2</Description>
<Price>2</Price>
</Product>
</Main>
</Root>
Мои Вопрос: должен ли я заменять дочерние узлы Product
на родительский узел и должен ли я переименовывать теги Name
, Description
, Price
- name
, description
, price
?
Я попытался десериализация с помощью этого кода:
for product in serializers.deserialize("xml", xmldata):
savedata = XMLData(product)
savedata.save()
я надеялся, что будет расти некоторых ошибок и я бы понять, что делать дальше, но не было никаких ошибок и данные XML не сохранить в базу данных ,
Надеюсь, вы поймете мою проблему и благодарите вас за ответ.
Здесь нет никакой магии. Django не может десериализовать любой XML, который вы хотите. Он может десериализовать только формат, описанный в [документации] (https://docs.djangoproject.com/en/1.9/topics/serialization/#xml). И ваш XML не соответствует ожидаемому формату. Вы должны изучить общие инструменты анализа XML (например, ['lxml'] (http://lxml.de/)) и вручную создавать модели из проанализированных данных. –
Благодарим за ответ, пожалуйста, сообщите свой ответ. Чтобы закрыть этот вопрос –
Существует лучший ответ от @ abu-ashraf-masnun. Не стесняйтесь принять его вместо этого. –