5

この次の xmlの場合、xml を取得してから解析して の値を取得するにはどうすればよい<age>ですか?

<boardgames>
  <boardgame objectid="13">
  <yearpublished>1995</yearpublished>
  <minplayers>3</minplayers>
  <maxplayers>4</maxplayers>
  <playingtime>90</playingtime>
  <age>10</age>
  <name sortindex="1">Catan</name>
  ...

私は現在試しています:

result = urlfetch.fetch(url=game_url)
xml = ElementTree.fromstring(result.content)

しかし、私が正しい道を進んでいるかどうかはわかりません。解析しようとするとエラーが発生します (xml が有効な xml ではないためだと思います)。

4

2 に答える 2

7

xml.findtext('age')またはxml.findtext('boardgames/age')、通常は 10 inside を取得しますが、<age>10</age>無効な xml が原因で解析が失敗したように見えます。ElementTree私の経験では、無効なxmlを解析するというかなり貧弱な仕事をしています。

代わりに、無効な xml を適切に処理するBeautifulSoupを使用してください。

content = urllib2.urlopen('http://boardgamegeek.com/xmlapi/boardgame/13').read()
soup = BeautifulSoup(content)
print soup.find('age').string
于 2010-12-29T19:19:33.867 に答える
2

以下は私にとってはうまくいきます:

import urllib2
from xml.etree import ElementTree

result = urllib2.urlopen('http://boardgamegeek.com/xmlapi/boardgame/13').read()
xml = ElementTree.fromstring(result)
print xml.findtext(".//age")
于 2010-12-29T19:26:14.970 に答える