2015-08-20 53 views
0

我想要做的只顯示其中parent_task_id == 0如何過濾XML字符串就像我在數據庫

self.task_xml = """ 
<?xml version="1.0" encoding="utf-8"?> 
<django-objects version="1.0"> 
    <object model="task.task" pk="31"> 
     <field name="name" type="CharField">New Task</field> 
     <field name="parent_task_id" type="IntegerField">0</field> 
    </object> 
    <object model="task.task" pk="32"> 
     <field name="name" type="CharField">New Task</field> 
     <field name="parent_task_id" type="IntegerField">0</field> 
    </object> 
    <object model="task.task" pk="33"> 
     <field name="name" type="CharField">New Task</field> 
     <field name="parent_task_id" type="IntegerField">31</field> 
    </object> 
    <object model="task.task" pk="34"> 
     <field name="name" type="CharField">New Task</field> 
     <field name="parent_task_id" type="IntegerField">31</field> 
    </object> 
</django-objects> 
""" 

self.xmlData = ET.fromstring(self.task_xml) 

self.xmlList = [] 
for obj in self.xmlData.iter("object"): 
    self.xmlList.append({'id': obj.find("object[@name='pk']").text, 
       'name': obj.find("field[@name='name']").text, 
       'parent_task_id': obj.find("field[@name='parent_task_id']").text, 
       } 

我想,如果我使用數據庫來做到這一點我跟模型做一些數據

Task.objects.filter(parent_task_id=0) 

但這次我使用XML字符串,它有任何功能來做到這一點?

+0

你是什麼意思'顯示數據,其中parent_task_id == 0',你的意思,你只需要存儲在那裏滿足該條件的'self.xmlList'元素呢? –

+0

是的,這是正確的。我只想顯示parents_task_id爲零的元素。 –

回答

1

同樣,你得到id的方法是錯誤的,你需要從object節點,而不是獲取屬性pk - obj.find("object[@name='pk']").text - Translate xml string to html, I received error messages - 正如已經回答了。

那麼對於剛剛獲得的信息所需的電流 - obj.find("field[@name='parent_task_id']").text,並檢查它是否等於0且僅當它等於0,將數據追加到的XMLList。

示例 -

self.xmlList = [] 
for obj in self.xmlData.iter("object"): 
    parent_task_id = obj.find("field[@name='parent_task_id']").text 
    if parent_task_id == '0': 
     self.xmlList.append({'id': obj.get('pk'), 
       'name': obj.find("field[@name='name']").text, 
       'parent_task_id': , 
       } 
+0

啊,是的。當我創建一個新問題時,我無法改變它。非常感謝你回答我的問題。我真的希望在Python中變得更好。 –

+0

很高興我能幫上忙。如果答案對您有幫助,我想要求您接受答案(通過點擊答案左側的勾號),這對社區會有幫助。 –

+0

我會的。我已經做了。再次感謝 –