2015-09-23 45 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()...我將編輯我的問題,讓你明白我的意思 –