加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:20:57 所属栏目:百科 来源:网络整理
导读:我试图轻松访问xml文件中的值. artikelen artikel nummer="121" codeABC123/code naamHighlight pen/naam voorraad231/voorraad prijs0.56/prijs /artikel artikel nummer="123" codePQR678/code naamNietmachine/naam voorraad587/voorraad prijs9.99/prijs
我试图轻松访问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'),'PQR678'),'Nietmachine'),'587'),'9.99')])])]))])

根节点称为artikelen,并且有一个子节点artikel,它是OrderedDict对象的列表,所以如果你想要每篇文章的代码,你会这样做:

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

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

如果您只在nummer为121时特别想要代码,则可以这样做:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读