我正在尝试轻松访问 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']
如果您只在nummer
为121
时特别想要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/