python - 如何使用 xmltodict 从 xml 文件中获取项目

标签 python xml xmltodict

我正在尝试轻松访问 xml 文件中的值。

<artikelen>
    <artikel nummer="121">
        <code>ABC123</code>
        <naam>Highlight pen</naam>
        <voorraad>231</voorraad>
        <prijs>0.56</prijs>
    </artikel>
    <artikel nummer="123">
        <code>PQR678</code>
        <naam>Nietmachine</naam>
        <voorraad>587</voorraad>
        <prijs>9.99</prijs>
    </artikel>
..... etc

如果我想访问值ABC123,我该如何获取它?

import xmltodict

with open('8_1.html') as fd:
    doc = xmltodict.parse(fd.read())
    print(doc[fd]['code'])

最佳答案

使用你的例子:

import xmltodict

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

如果您检查 doc,您会看到它是一个 OrderedDict,按标签排序:

>>> doc
OrderedDict([('artikelen',
              OrderedDict([('artikel',
                            [OrderedDict([('@nummer', '121'),
                                          ('code', 'ABC123'),
                                          ('naam', 'Highlight pen'),
                                          ('voorraad', '231'),
                                          ('prijs', '0.56')]),
                             OrderedDict([('@nummer', '123'),
                                          ('code', 'PQR678'),
                                          ('naam', 'Nietmachine'),
                                          ('voorraad', '587'),
                                          ('prijs', '9.99')])])]))])

根节点称为 artikelen,还有一个子节点 artikel,它是 OrderedDict 对象的列表,所以如果您想要 code 每篇文章,你会做:

codes = []
for artikel in doc['artikelen']['artikel']:
    codes.append(artikel['code'])

# >>> codes
# ['ABC123', 'PQR678']

如果您只在nummer121 时特别想要code,您可以这样做:

code = None
for artikel in doc['artikelen']['artikel']:
    if artikel['@nummer'] == '121':
        code = artikel['code']
        break

也就是说,如果您正在解析 XML 文档并想搜索这样的特定值,我会考虑使用 XPath expressions , ElementTree 支持。

关于python - 如何使用 xmltodict 从 xml 文件中获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40154727/

相关文章:

python - 在 Python 中的可迭代对象上调用多个 reduce 函数的有效方法?

python - OpenCV - 如何找到圆角矩形的矩形轮廓?

Python:frozensets 比较

xml - 使用 NLog 在 Mongo 数据库中存储日志

Python 3 : Unable to convert XML to dict using xmltodict

python - Linux-Ubuntu : how can i install the python module autopy?

xml - 将函数应用于 R 中的 xmlNodeList(不是整个 xml 文件)

c# - 如何从响应中删除 "method"节点?

python - 在 xmltodict 中捕获 ExpatError

python - xmltodict: ExpatError: 语法错误: 第 1 行,第 0 列,从 QuickGO 获取 xml