gpt4 book ai didi

python - 将 xml 字符串转换为 Python 列表

转载 作者:数据小太阳 更新时间:2023-10-29 02:13:43 27 4
gpt4 key购买 nike

我是 Python 新手。我想将此 XML 字符串显示为模板中的列表。

xmlData = """<?xml version="1.0" encoding="utf-8"?> 
<django-objects version="1.0">
<object model="task.task" pk="4">
<field name="name" type="CharField">New Task</field>
<field name="mission_id" type="IntegerField">2</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="5">
<field name="name" type="CharField">New Task</field>
<field name="mission_id" type="IntegerField">2</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="6">
<field name="name" type="CharField">New ask</field>
<field name="mission_id" type="IntegerField">2</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="7">
<field name="name" type="CharField">New Task</field>
<field name="mission_id" type="IntegerField">2</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object></django-objects> """

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

from xml.etree import cElementTree as ET

我也做了:

xmlList = ET.fromstring(xmlData)

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

print xmlList.name
print xmlList.mission_id
print xmlList.parent_task_id

请帮助我了解正确的语法。

最佳答案

您可以使用此代码示例:

from xml.etree import cElementTree as ET
xml = ET.fromstring(xmlData)

for child in xml.iter('field'):
print child.tag, child.attrib, child.text

遍历所有名为 field 的 XML 元素,并将它们的标签、属性和文本值打印到控制台。

查看 xml.etree documentation获取更多样本。

Django View

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

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

app/views.py

from xml.etree import cElementTree as ET

from django.http import HttpResponse
from django.shortcuts import render
from django.template import Context, loader


def xml_view(request):
xmlData = """<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object model="task.task" pk="4">
<field name="name" type="CharField">foo</field>
<field name="mission_id" type="IntegerField">1</field>
<field name="parent_task_id" type="IntegerField">20</field>
</object>
<object model="task.task" pk="7">
<field name="name" type="CharField">bar</field>
<field name="mission_id" type="IntegerField">2</field>
<field name="parent_task_id" type="IntegerField">10</field>
</object></django-objects>"""

xml = ET.fromstring(xmlData)

fields = []
for obj in xml.iter("object"):
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,
})

t = loader.get_template('your_app/xml_view.html')
c = Context({'elem_list': fields})
return HttpResponse(t.render(c))

app/templates/app/xml_view.html

<html lang="en">
<body>
<table>
<tr>
<th>Name</th>
<th>Mission ID</th>
<th>Parent Task ID</th>
</tr>
{% for elem in elem_list %}
<tr>
<td>{{ elem.name }}</td>
<td>{{ elem.mission_id }}</td>
<td>{{ elem.parent_task_id }}</td>
</tr>
{% endfor %}
</body>
</html>

关于python - 将 xml 字符串转换为 Python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com