假设我有一个这样的XML:
<root>
<elements>
<element> foo </element>
<element is="false"> foo </element>
<element is="false"> bli </element>
<element is="false"> bla </element>
</elements>
</root>我该怎么做:
import xml.etree.ElementTree as ET
root = ET.fromstring(XmlFromAbove)
res_a = root.findall("element[@is='false']")) ##<- This gives me all elements with the specific attribute
res_b = root.findall("element[not@is='false']")) ##<- This would be nice to give me all elements without that specific attribute (`<element> foo </element>` in this case)现在,我知道res_b不会工作,但我猜这是一个常见的问题,所以有人知道解决这个问题的办法是什么吗?
再指出一点(从评论中复制)
我肯定可以找到包含"foo“的元素,但我想知道的是,是否有一种方法可以找到不包含属性is="false”的元素。
发布于 2020-09-04 18:10:04
见下文
import xml.etree.ElementTree as ET
xml = '''<root>
<elements>
<element> foo </element>
<element is="false"> foo </element>
<element is="false"> bli </element>
<element is="false"> bla </element>
<element please="false"> no_is </element>
<element is="true"> with_true_is </element>
</elements>
</root>'''
root = ET.fromstring(xml)
no_is_lst = [e for e in root.findall('.//element') if 'is' not in e.attrib]
for e in no_is_lst:
print(e.text)输出
foo
no_is https://stackoverflow.com/questions/63738487
复制相似问题