Python minidom element.data возвращает только объект, а не текст - PullRequest
0 голосов
/ 16 декабря 2011

Я довольно новичок в Python и просто пытаюсь проанализировать результаты простого Web-API, который возвращает следующий синтаксис XML:

<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>

Мой анализатор выглядит так:1005 *

Мое намерение - получить текстовое значение элементов TITLE в xml.Но при выводе содержимого списка возврата на консоль это выглядит так:

<DOM Element: TITLE at 0x368e8c0>

Что я делаю не так?Кто-нибудь из вас может мне помочь?Спасибо (ОЧЕНЬ МНОГО!) Заранее,

Кристиан

1 Ответ

0 голосов
/ 16 декабря 2011

Кажется, работает хорошо для меня. Вы получаете объект элемента 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")]
...