【问题标题】:Python: Get value with xmltodictPython:使用 xmltodict 获取价值
【发布时间】:2016-03-27 22:23:10
【问题描述】:

我有一个如下所示的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<session id="2934" name="Valves" docVersion="5.0.1">
    <docInfo>
        <field name="Employee" isMandotory="True">Jake Roberts</field>
        <field name="Section" isOpen="True" isMandotory="False">5</field>
        <field name="Location" isOpen="True" isMandotory="False">Munchen</field>
    </docInfo>
</session>

使用 xmltodict 我想在字符串中获取 Employee。这可能很简单,但我似乎无法弄清楚。

这是我的代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-


import sys
import xmltodict


with open('valves.xml') as fd:
    doc = xmltodict.parse(fd.read())


print "ID          : %s" % doc['session']['@id']
print "Name        : %s" % doc['session']['@name']
print "Doc Version : %s" % doc['session']['@docVersion']


print "Employee    : %s" % doc['session']['docInfo']['field']


sys.exit(0)

有了这个,我确实得到了一个列表中的所有字段,但可能使用 xmltodict 每个单独的字段属性或元素都可以作为键值访问。 如何像访问 docVersion 的值一样访问值“Jake Roberts”?

【问题讨论】:

    标签: python xmltodict


    【解决方案1】:

    您得到的是一个字段列表,其中每个字段都由dict() 表示。探索这个 dict(例如在 Python 交互式 shell 中)以缩小获得所需值的方法。

    >>> doc["session"]["docInfo"]["field"][0]
    OrderedDict([(u'@name', u'Employee'), (u'@isMandotory', u'True'), ('#text', u'Jake Roberts')])
    

    为了得到元素值,在上面的 sn-p 中将["#text"] 添加到行尾。

    【讨论】:

    • @JakeRoberts 欢迎您! - 如果 StackOverflow 答案解决了问题/回答了问题,您可以通过单击复选标记(答案旁边)选择 accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。注意:没有义务这样做。
    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2018-03-20
    • 2015-04-09
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    相关资源
    最近更新 更多