我试图轻松访问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.