我想这样解析xml:
<?xml version="1.0" ?>
<matches>
<round_1>
<match_1>
<home_team>team_5</home_team>
<away_team>team_13</away_team>
<home_goals_time>None</home_goals_time>
<away_goals_time>24;37</away_goals_time>
<home_age_average>27.4</home_age_average>
<away_age_average>28.3</away_age_average>
<score>0:2</score>
<ball_possession>46:54</ball_possession>
<shots>8:19</shots>
<shots_on_target>2:6</shots_on_target>
<shots_off_target>5:10</shots_off_target>
<blocked_shots>1:3</blocked_shots>
<corner_kicks>3:4</corner_kicks>
<fouls>10:12</fouls>
<offsides>0:0</offsides>
</match_1>
</round_1>
</matches>
我使用标准库- xml,但是我不能从内部标记中获取值。这是我的示例代码:
import xml.etree.ElementTree as et
TEAMS_STREAM = "data/stats1.xml"
tree = et.parse(TEAMS_STREAM)
root = tree.getroot()
for elem in root.iter('home_goals_time'):
print(elem.attrib)
它应该是有效的,但它不是。我试图找出xml结构中的问题,但我找不到。我总是收到空洞的判决书。你能告诉我出什么事了吗?
发布于 2018-07-27 03:49:59
您正在对元素调用.attrib
,但这些元素没有属性。如果要打印元素的内部文本,请使用.text
而不是.attrib
for elem in root.iter('home_goals_time'):
print(elem.text)
发布于 2018-07-27 03:44:22
出现问题的原因是需要逐级解析xml。通过使用findall
,我能够在<home_goals_time>
中获得值。
for i in root.findall('.//home_goals_time'):
print (i.text)
None
https://stackoverflow.com/questions/51546336
复制相似问题