我对 XML 和 python 有基本的了解,并且一直在使用 minidom 并取得了一些成功。我遇到过无法从 XML 文件中获取所需值的情况。这是预先存在的文件的基本结构。
<localization>
<b n="Stats">
<l k="SomeStat1">
<v>10</v>
</l>
<l k="SomeStat2">
<v>6</v>
</l>
</b>
<b n="Levels">
<l k="Level1">
<v>Beginner Level</v>
</l>
<l k="Level2">
<v>Intermediate Level</v>
</l>
</b>
</localization>
大约有 15 个不同的 <b>
有几十个 child 的标签。我想做的是,如果给定级别编号 (1),则找到 <v>
相应级别的节点。我只是不知道该怎么做。
您可能会考虑使用 XPATH,这是一种用于寻址 xml 文档各部分的语言。
这是使用 lxml.etree
的答案,它支持 xpath
。
>>> data = """
... <localization>
... <b n="Stats">
... <l k="SomeStat1">
... <v>10</v>
... </l>
... <l k="SomeStat2">
... <v>6</v>
... </l>
... </b>
... <b n="Levels">
... <l k="Level1">
... <v>Beginner Level</v>
... </l>
... <l k="Level2">
... <v>Intermediate Level</v>
... </l>
... </b>
... </localization>
... """
>>>
>>> from lxml import etree
>>>
>>> xmldata = etree.XML(data)
>>> xmldata.xpath('/localization/b[@n="Levels"]/l[@k=$level]/v/text()',level='Level1')
['Beginner Level']
我是一名优秀的程序员,十分优秀!