匹配文件中的2行

时间:2016-05-25 08:15:35

标签: python xml

我有一个我想读的XML文件,其中包含多行,但有两行我特别在寻找。

<intent-filter>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="myapp"/>
</intent-filter>

我想搜索android:scheme,但前提是它之前或之后都有'BROWSABLE'类别。如果匹配,请将它们打印出来。

如果android:scheme独立,并且没有'BROWSABLE'属性,请忽略它。

1 个答案:

答案 0 :(得分:0)

可以通过以下方式使用xmltodict来解决此问题(首先使用pip install xmltodict进行安装):

我使用了这个xml文件(在代码中名为'xml_stack_overflow_question.xml'):

<doc>
<intent-filter>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="myapp"/>
</intent-filter>
<intent-filter>
        <category android:name="android.intent.category.NOTBROWSABLE"/>
        <data android:scheme="myapp2"/>
</intent-filter>
</doc>

和这段代码:

import xmltodict

with open('xml_stack_overflow_question.xml') as f:
    doc_file = xmltodict.parse(f.read())

for filter in (doc_file['doc']['intent-filter']):
    if filter['category']['@android:name'] == "android.intent.category.BROWSABLE":
        print "Match Found: " + filter['data']['@android:scheme']

输出结果为:

Match Found: myapp

这意味着只获取了具有“BROWSABLE”类别的条目(而不是第二个“ BROWSABLE”