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 に答える