我是Python的新手,我只想解析返回以下XML语法的简单Web-API的结果:
<rss version='2.0'>
<channel>
<title>www.onlinetvrecorder.com</title>
<description>OTR Torrents</description>
<link>http://www.onlinetvrecorder.com/</link>
<copyright>OTR</copyright>
<STATIONS>
<ITEM>
<TITLE>3SAT</TITLE>
<COUNTRY>DE</COUNTRY>
<LANGUAGE>DE</LANGUAGE>
</ITEM>
<ITEM>
<TITLE>ANIXE</TITLE>
<COUNTRY>DE</COUNTRY>
<LANGUAGE>DE</LANGUAGE>
</ITEM>
<ITEM>
<TITLE>ARD</TITLE>
<COUNTRY>DE</COUNTRY>
<LANGUAGE>DE</LANGUAGE>
</ITEM>
</STATIONS>
</channel>
</rss>
我的解析器看起来像这样:
import xml.dom.minidom as dom
def parseStations(stationsResult):
document = dom.parse(stationsResult)
stations = []
#get all ITEM elements and get their child TITLE
items = document.getElementsByTagName("ITEM")
for item in items:
stationTitleNodeValue = item.getElementsByTagName("TITLE")[0].firstChild.data
stations.append(stationTitleNodeValue);
return stations
我的目的是获取xml中TITLE Elements的文本值。但是当将返回列表的内容打印到控制台时,它看起来像这样:
<DOM Element: TITLE at 0x368e8c0>
我做错了什么?你们有人可以帮助我吗? 非常感谢(非常多!),
基督教
答案 0 :(得分:0)
似乎对我有用。您将获得一个DOM元素对象,该对象在大多数上下文中都充当字符串。因此,print x[0]
等(其中x
是函数的返回值)通常会为您提供所需的结果。
如果您只想将电台名称列表作为字符串,则将它们转换为字符串(XML是Unicode或其子集,因此您应该使用Unicode字符串):
stations.append(unicode(stationTitleNodeValue))
顺便说一句,你所写的内容可以在列表理解中更紧凑地表达出来:
def parseStations(stationsResult):
return [unicode(item.getElementsByTagName("TITLE")[0].firstChild.data)
for item in dom.parse(stationsResult).getElementsByTagName("ITEM")]