将xml字符串转换为Python列表

前端之家收集整理的这篇文章主要介绍了将xml字符串转换为Python列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Python的新手.我想将此XML字符串显示为模板中的列表.

  1. xmlData = """<?xml version="1.0" encoding="utf-8"?>
  2. <django-objects version="1.0">
  3. <object model="task.task" pk="4">
  4. <field name="name" type="CharField">New Task</field>
  5. <field name="mission_id" type="IntegerField">2</field>
  6. <field name="parent_task_id" type="IntegerField">0</field>
  7. </object>
  8. <object model="task.task" pk="5">
  9. <field name="name" type="CharField">New Task</field>
  10. <field name="mission_id" type="IntegerField">2</field>
  11. <field name="parent_task_id" type="IntegerField">0</field>
  12. </object>
  13. <object model="task.task" pk="6">
  14. <field name="name" type="CharField">New ask</field>
  15. <field name="mission_id" type="IntegerField">2</field>
  16. <field name="parent_task_id" type="IntegerField">0</field>
  17. </object>
  18. <object model="task.task" pk="7">
  19. <field name="name" type="CharField">New Task</field>
  20. <field name="mission_id" type="IntegerField">2</field>
  21. <field name="parent_task_id" type="IntegerField">0</field>
  22. </object></django-objects> """

我只想将其显示为列表.
我导入cElementTree

  1. from xml.etree import cElementTree as ET

我也做了:

  1. xmlList = ET.fromstring(xmlData)

但我不知道如何展示它.我想展示这样的东西.

  1. print xmlList.name
  2. print xmlList.mission_id
  3. print xmlList.parent_task_id

请帮我知道正确的语法.

解决方法

您可以使用此代码示例:

  1. from xml.etree import cElementTree as ET
  2. xml = ET.fromstring(xmlData)
  3.  
  4. for child in xml.iter('field'):
  5. print child.tag,child.attrib,child.text

迭代所有名为field的XML元素,并将其标记,属性和文本值打印到控制台.

查看xml.etree documentation了解更多样品.

Django视图

为了将解析的XML数据呈现为Django应用程序中的视图,您需要viewtemplate.

假设您的项目中安装了名为app的Django应用程序.

应用程序/ views.py

  1. from xml.etree import cElementTree as ET
  2.  
  3. from django.http import HttpResponse
  4. from django.shortcuts import render
  5. from django.template import Context,loader
  6.  
  7.  
  8. def xml_view(request):
  9. xmlData = """<?xml version="1.0" encoding="utf-8"?>
  10. <django-objects version="1.0">
  11. <object model="task.task" pk="4">
  12. <field name="name" type="CharField">foo</field>
  13. <field name="mission_id" type="IntegerField">1</field>
  14. <field name="parent_task_id" type="IntegerField">20</field>
  15. </object>
  16. <object model="task.task" pk="7">
  17. <field name="name" type="CharField">bar</field>
  18. <field name="mission_id" type="IntegerField">2</field>
  19. <field name="parent_task_id" type="IntegerField">10</field>
  20. </object></django-objects>"""
  21.  
  22. xml = ET.fromstring(xmlData)
  23.  
  24. fields = []
  25. for obj in xml.iter("object"):
  26. fields.append({'name': obj.find("field[@name='name']").text,'mission_id': obj.find("field[@name='mission_id']").text,'parent_task_id': obj.find("field[@name='parent_task_id']").text,})
  27.  
  28. t = loader.get_template('your_app/xml_view.html')
  29. c = Context({'elem_list': fields})
  30. return HttpResponse(t.render(c))

应用程序/模板/应用/ xml_view.html

  1. <html lang="en">
  2. <body>
  3. <table>
  4. <tr>
  5. <th>Name</th>
  6. <th>Mission ID</th>
  7. <th>Parent Task ID</th>
  8. </tr>
  9. {% for elem in elem_list %}
  10. <tr>
  11. <td>{{ elem.name }}</td>
  12. <td>{{ elem.mission_id }}</td>
  13. <td>{{ elem.parent_task_id }}</td>
  14. </tr>
  15. {% endfor %}
  16. </body>
  17. </html>

猜你在找的XML相关文章