2015-09-23 46 views
0

这是我的代码的一部分。如何清除模型对象列表

dbList = [] 
for obj in xmlData.iter("object") 
    task = TaskViewModel() 
    task.id = obj.("pk") 
    task.name = obj.find("field[@name='name']").text 
    task.parent_task_id = obj.find("field[@name='parent_task_id']").text 
    dbList.append(task) 

我的问题是它只给我重复的结果。

我预期的结果是:

dbList = ["dale","Michelle","Fred","Debbie"] 

,但它给了我这样的结果:

dbList = ["Debbie","Debbie","Debbie","Debbie"] 

我想我应该清楚的东西。

你好,这是示例文件:

<?xml version="1.0" encoding="utf-8"?> 
    <django-objects version="1.0"> 
<object model="task.task" pk="31"> 
<field name="name" type="CharField">Dale</field> 
<field name="parent_task_id" type="IntegerField">0</field> 
</object> 
<object model="task.task" pk="32"> 
<field name="name" type="CharField">Michelle</field> 
<field name="parent_task_id" type="IntegerField">0</field> 
</object> 
<object model="task.task" pk="33"> 
<field name="name" type="CharField">Fred</field> 
<field name="parent_task_id" type="IntegerField">31</field> 
</object> 
<object model="task.task" pk="34"> 
<field name="name" type="CharField">Debbie</field> 
<field name="parent_task_id" type="IntegerField">31</field> 
</object> 
</django-objects>" 

我有这个类

class TaskViewModel(): 
    id = 0 
    name = "" 
    parent_task_id = "" 

所以这就是为什么我这样做:

for obj in xmlData.iter("object") 
    task = TaskViewModel() 
    task.id = obj.("pk") 
    task.name = obj.find("field[@name='name']").text 
    task.parent_task_id = obj.find("field[@name='parent_task_id']").text 
    dbList.append(task) 
+1

您应该添加一个示例xml文件。 –

+0

是的。这将有助于看到什么源数据看起来像帮助调试这 – idjaw

+0

嗨,大家好,我添加了我的xml文件 –

回答

0

我不知道你是什么使用来解析你的xml,我使用了xml库并设法得到以下内容:

t.xml是您发布的XML文件。

from xml.etree import ElementTree 

with open('t.xml') as f: 
    tree = ElementTree.parse(f) 

dbList = [] 
for node in tree.iter(): 
    if node.tag == 'field' and node.attrib.get('name') == 'name': 
     dbList.append(node.text) 
+0

是的,我也这样做,但它仍然给我的结果: dbList = [“Debbie”,“Debbie”,“Debbie”,“Debbie”] –

+0

这很奇怪。我用XML运行这段代码,我得到了'['Dale','Michelle','Fred','Debbie']' – idjaw

+0

我看到了......因为在我的情况下......我必须将它追加到dbList.append(task)where task = TaskViewmodel()...我将编辑我的问题,让你明白我的意思 –