首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从这个XML中获取值?

如何从这个XML中获取值?
EN

Stack Overflow用户
提问于 2018-07-27 03:36:47
回答 2查看 38关注 0票数 0

我想这样解析xml:

代码语言:javascript
复制
<?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,但是我不能从内部标记中获取值。这是我的示例代码:

代码语言:javascript
复制
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结构中的问题,但我找不到。我总是收到空洞的判决书。你能告诉我出什么事了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-27 03:49:59

您正在对元素调用.attrib,但这些元素没有属性。如果要打印元素的内部文本,请使用.text而不是.attrib

代码语言:javascript
复制
for elem in root.iter('home_goals_time'):
    print(elem.text)
票数 3
EN

Stack Overflow用户

发布于 2018-07-27 03:44:22

出现问题的原因是需要逐级解析xml。通过使用findall,我能够在<home_goals_time>中获得值。

代码语言:javascript
复制
for i in root.findall('.//home_goals_time'):
     print (i.text)
None
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51546336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档