如何从 Django/Python 中的 XML 标签之间的 XML 文档中提取数据?
我有一个外部 xml 文件,正在我的 views.py
文件中加载
def test(request):
url = urllib2.urlopen("http://someurl.com?xml")
dom = minidom.parse(url)
groups = dom.getElementsByTagName("group")
deal_holder = []
# Iterate over each DOM group element:
for group in groups:
# Iterate over each child node
for groupChild in group.childNodes:
deal_holder.append(groupChild)
return render_to_response('folder/test.html', {'deal_holder':deal_holder})
这是加载的 XML 文件的样子:
<page>
<site>
<siteid>25550</siteid>
<sitename>
<![CDATA[ Some Text Here ]]>
</sitename>
<sitelink>
http://somelinkehere.com
</sitelink>
<timezone>
<![CDATA[ Pacific Time ]]>
</timezone>
</site>
<groups>
<enablefeaturedgroup>OFF</enablefeaturedgroup>
<group>
<groupid>467246</groupid>
<groupname>
<![CDATA[ Today's Deal ]]>
</groupname>
<groupdescription>
<![CDATA[ ]]>
</groupdescription>
</group>
<group>
<groupid>467247</groupid>
<groupname>
<![CDATA[ Past Deals ]]>
</groupname>
<groupdescription>
<![CDATA[ ]]>
</groupdescription>
</group>
</groups>
</page>
问题是我见过的所有示例都使用类似于我的内容正在使用,但它们通常具有如下所示的 XML 标记:
并能够从 day="Wed"
、date="14 Sep 2011"
等内容中检索信息, low="56"
等...但我想要检索的信息实际上是在标签之间,例如
任何建议或信息将不胜感激。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 minidom 与 javascript 非常相似。
如果您使用 urllib,则不需要使用
StringIO
,因为minidom
的parse
方法需要一个类似文件的对象 (urllib .urlopen
返回的就是这个)。我建议不要将此列表传递给 django 模板系统。你应该进一步解析它。
您可以将它们的值保存在字典列表中。
Using minidom is quite similar to javascript.
Using
StringIO
is not required if you are using urllib, because theminidom
'sparse
method expects a file-like object (urllib.urlopen
returns just that).I'd advise against passing this list to the django templating system. You should parse it further.
You could save them values in a list of dictionaries.
使用
lxml
你可以这样做:With
lxml
you could do something like this: