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

我正在尝试从xml文件轻松访问值

<artikelen>
<artikel nummer=“121”>
<代码>ABC123&lt/代码>
<naam>突出显示钢笔&lt/naam>
<沃拉德>231&lt/沃拉德>
<prijs>0.56&lt/prijs>
&lt/artikel>
<artikel nummer=“123”>
<代码>PQR678&lt/代码>
<naam>尼特机器&lt/naam>
<沃拉德>587&lt/沃拉德>
<prijs>9.99&lt/prijs>
&lt/artikel>
..... 等

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

导入xmltodict
以open(’8_1.html’)作为fd:
doc=xmltodict.parse(fd.read())
打印(文件[fd][“代码])

以您的例子:

导入xmltodict
以open(’artikelen.xml’)作为fd:
doc=xmltodict.parse(fd.read())

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

&gt&燃气轮机&燃气轮机;医生
OrderedDict([('artikelen',
OrderedDict([('artikel',
[OrderedDict([('@numer','121'),
(‘代码’、‘ABC123’),
('naam','Highlight pen'),
('voorraad','231'),
('prijs','0.56')),
OrderedDict([('@numer','123'),
(“代码”,“PQR678”),
(‘naam’、‘Nietmachine’),
('voorraad','587'),
('prijs','9.99')]]]]]]]]

根节点称为artikelen,其中有一个子节点artikel,它是OrderedDict对象的列表,因此如果您希望每个文章都有code,您可以执行以下操作:

代码=[]
对于文档['artikelen']['artikel']on artikel:
代码。追加(artikel['code']))
#&gt&燃气轮机&燃气轮机;代码
#['ABC123','PQR678']

如果仅当numer121时才特别需要code,则可以执行以下操作:

code=None
对于文档['artikelen']['artikel']on artikel:
如果artikel['@nummer']=='121':
代码=artikel[“代码”]
打破

这样说,如果你解析XML文档并想搜索一个特定的值,我会考虑使用XPath表达式,这是由代码> eleTrime >支持的。

发表评论