Skip to main content
 首页 » 编程设计

python之如何在 python 中过滤 XML 文件中的值

2025年05月04日10dudu

我对 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']