Python 在Django中准备用于反序列化的xml数据
我的模型有几个字段,如下所示:Python 在Django中准备用于反序列化的xml数据,python,django,deserialization,Python,Django,Deserialization,我的模型有几个字段,如下所示: class XMLData(models.Model): name = models.CharField() description = models.CharField() price = models.CharField() <Root> <Header> <information>info</information> </Header> <Ma
class XMLData(models.Model):
name = models.CharField()
description = models.CharField()
price = models.CharField()
<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>
和包装在字符串中的xml数据,xml数据如下所示:
class XMLData(models.Model):
name = models.CharField()
description = models.CharField()
price = models.CharField()
<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>
所以我希望这会引起一些错误,我会明白接下来该怎么做,但并没有错误,xml数据并没有保存到数据库中
希望您理解我的问题,并感谢您的回答。您似乎只对存储产品信息感兴趣。在这种情况下,
Product
将是比XMLData
更好的型号名称
Django序列化程序没有帮助,因为您的数据格式不正确。但是,您可以使用lxml反序列化。代码取自:
应该将产品存储到数据库中 您似乎只对存储产品信息感兴趣。在这种情况下,
Product
将是比XMLData
更好的型号名称
Django序列化程序没有帮助,因为您的数据格式不正确。但是,您可以使用lxml反序列化。代码取自:
应该将产品存储到数据库中 这里没有魔法。Django无法反序列化所需的任何XML。它只能反序列化中描述的格式。而且您的XML不符合预期的格式。您必须研究通用XML解析工具(如),并从解析的数据手动创建模型。感谢您的回答,请将您的注释设置为“答案”。为了结束这个问题,@abu ashraf masnun给出了一个更好的答案。你可以接受它,这里没有魔法。Django无法反序列化所需的任何XML。它只能反序列化中描述的格式。而且您的XML不符合预期的格式。您必须研究通用XML解析工具(如),并从解析的数据手动创建模型。感谢您的回答,请将您的注释设置为“答案”。为了结束这个问题,@abu ashraf masnun给出了一个更好的答案。请随意接受它。
d = etree_to_dict(e)
products = d['Root']['Main']['Product']
for p in products:
product = Product()
p.name = p['Name']
p.description = p['Description']
p.price = p['Price']
p.save()