首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ElementTree解析XML结果

使用ElementTree解析XML结果
EN

Stack Overflow用户
提问于 2015-05-20 17:50:27
回答 1查看 66关注 0票数 0

我使用Element解析API调用的以下结果。

代码语言:javascript
复制
<response status="success" code="19">
<result total-count="1" count="1">
    <users>
        <entry name="admin">
            <phash>$$$$$</phash>
            <permissions>
                <role-based>
                    <superuser>yes</superuser>
                </role-based>
            </permissions>
        </entry>
        <entry name="tester">
            <permissions>
                <role-based>
                    <superuser>yes</superuser>
                </role-based>
            </permissions>
            <phash>$$$$$</phash>
        </entry>
    </users>
</result>

我想简单地打印用户名,这是一个条目的属性。我正在使用下面的代码来解析这一点。

代码语言:javascript
复制
def BP01002(ip, apikey):
  xpath = "/config/mgt-config/users"
  rulequery = {'type': 'config', 'action': 'get', 'key': apikey, 'xpath': xpath}
  rrule = requests.get('https://' + ip + '/api', params = rulequery, verify=False)
  rresp = ET.fromstring(rrule.text)
  user = rresp.findall("./result/users")
  print user

如果我只是执行一个打印用户,我会得到以下响应,这是我所期望的。

代码语言:javascript
复制
[<Element entry at 6ffff0948c0>, <Element entry at 6ffff094a28>]

如果我试图使用user.text或user.attrib打印结果的文本,则会得到以下错误。

代码语言:javascript
复制
AttributeError: 'list' object has no attribute 'text'

如何仅提取条目名称文本数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-20 17:59:42

findall返回一个列表。如果要打印element.text,则需要如下所示

代码语言:javascript
复制
[u.text for u in rresp.findall('users')]

但是,这只会在<users>之后打印换行符。我想,你可能想要的是

代码语言:javascript
复制
>>> [e.attrib for e in rresp.findall('users/entry')]
[{'name': 'admin'}, {'name': 'tester'}]

为了完成,element.text在文本节点元素的打开和关闭标记中返回文本,如下

代码语言:javascript
复制
<element>sometext</element>

或者是"sometext“如果您的元素不是文本节点,它将返回元素与下一个节点之间的换行符或任何内容。

代码语言:javascript
复制
<element>
    <child>
    </child>
</element>

在上面的示例中,对于节点子元素或元素,文本将返回一个换行符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30356939

复制
相关文章

相似问题

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