将xml字符串翻译为html,我收到错误消息

时间:2015-08-20 04:13:01

标签: python xml django

您好我收到了错误消息。

这是错误消息

'NoneType' object has no attribute 'text'

这是我的代码

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,
                    }

我只想复制来自:

的ID
<object model="task.task" pk="33">

我确信这不正确。

'id': obj.find("object[@name='pk']").text
你可以帮我知道正确的语法。

1 个答案:

答案 0 :(得分:0)

假设这是lxml.etreexml.etree.ElementTree,你错误地做了,你试图找到一个带有object节点且带有标签object的节点name属性为pk,这是不正确的。

您想要执行以下操作 -

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

obj.get('pk')从对象节点获取pk属性的值。