0

我对 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 元素的文本值。但是当将返回列表的内容打印到控制台时,它看起来像这样:

<DOM Element: TITLE at 0x368e8c0>

我究竟做错了什么?你们中的任何人都可以帮助我吗?提前谢谢你(非常感谢!),

基督教

4

1 回答 1

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")]
于 2011-12-15T22:27:24.397 回答