我有一个我想读的XML文件,其中包含多行,但有两行我特别在寻找。
<intent-filter>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="myapp"/>
</intent-filter>
我想搜索android:scheme
,但前提是它之前或之后都有'BROWSABLE'类别。如果匹配,请将它们打印出来。
如果android:scheme
独立,并且没有'BROWSABLE'属性,请忽略它。
答案 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”