我正在尝试解析显示NFL计划的XML Feed,其中一个属性是游戏时间,看起来像这个GameTime =“8:30 PM”
这是XML的样子
的剪辑<Schedule Season="2010" Timezone="Eastern">
<Game gameId="1" Week="1" GameDate="2010-09-09" AwayTeam="MIN" HomeTeam="NO" GameTime="8:30 PM"/>
<Game gameId="2" Week="1" GameDate="2010-09-12" AwayTeam="MIA" HomeTeam="BUF" GameTime="1:00 PM"/>
<Game gameId="3" Week="1" GameDate="2010-09-12" AwayTeam="DET" HomeTeam="CHI" GameTime="1:00 PM"/>
<Game gameId="4" Week="1" GameDate="2010-09-12" AwayTeam="OAK" HomeTeam="TEN" GameTime="1:00 PM"/>
</Schedule>
这是我的代码来阅读它
url="http://example.com/schedule.xml"
dom = minidom.parse(urllib2.urlopen(url))
for node in dom.getElementsByTagName('Game'):
print node.getAttribute('AwayTeam'),
print node.getAttribute('HomeTeam'),
print node.getAttribute('Week'),
print node.getAttribute('gameId'),
print node.getAttribute('GameDate'),
print node.getAttribute('GameTime')
它会打印我期望的内容,直到我添加最后一行。 ETA:一旦添加了最后一行,它就会从XML的打印行变为零。
print node.getAttribute('GameTime')
我认为这是因为返回的数据中有一个冒号,但我无法找到任何东西来帮助我转义它以允许它打印或忽略它。
非常感谢任何帮助。
答案 0 :(得分:0)
我试图重现你的错误,但它打印得很好。
我尝试从Python模块中的字符串加载数据,我尝试从命名文件加载数据,然后尝试从文件对象加载数据。他们都处理结肠就好了。
现在唯一的区别似乎是获取数据的方式:urllib2.openurl()。也许该函数返回的数据并不完全是minidom所期望的。或者它可能与冒号角色有关。
以下是我使用的代码(test.xml文件包含与三引号字符串中相同的xml数据):
from xml.dom import minidom
src = """
<Schedule Season="2010" Timezone="Eastern">
<Game gameId="1" Week="1" GameDate="2010-09-09" AwayTeam="MIN" HomeTeam="NO" GameTime="8:30 PM"/>
<Game gameId="2" Week="1" GameDate="2010-09-12" AwayTeam="MIA" HomeTeam="BUF" GameTime="1:00 PM"/>
<Game gameId="3" Week="1" GameDate="2010-09-12" AwayTeam="DET" HomeTeam="CHI" GameTime="1:00 PM"/>
<Game gameId="4" Week="1" GameDate="2010-09-12" AwayTeam="OAK" HomeTeam="TEN" GameTime="1:00 PM"/>
</Schedule>
"""
def test_print(dom):
for node in dom.getElementsByTagName('Game'):
print node.getAttribute('AwayTeam'),
print node.getAttribute('HomeTeam'),
print node.getAttribute('Week'),
print node.getAttribute('gameId'),
print node.getAttribute('GameDate'),
print node.getAttribute('GameTime')
print ''
dom = minidom.parseString(src)
test_print(dom)
dom = minidom.parse('data.xml')
test_print(dom)
f = open('data.xml', 'r')
dom = minidom.parse(f)
test_print(dom)
f.close()
url = 'http://api.fantasyfootballnerd.com/ffnScheduleXML.php?apiKey=1'
dom = minidom.parse(urllib2.urlopen(url))
test_print(dom)
编辑:添加了Mike(原作者)提供的URL测试。