我正在解析一个 XML,两个元素具有相同的名称,但两个选项中的每个元素都需要唯一的值。我能够让代码按我想要的方式运行,但是我不确定为什么一种方法有效(
in
)而另一种则无效(==
)。
XML 片段:
<metaMetadata>
<metadataSchema>Value1</metadataSchema>
<metadataSchema>Value2</metadataSchema>
</metaMetadata>
代码:
schema_val = ['Value1', 'Value2']
for ele in root.findall(".//{*}metaMetadata"):
m_schema = ele.findall("lom:metadataSchema",ns)
m_schema_check = [i for i in schema_val if i in m_schema[0].text]
if m_schema_check:
for i in m_schema_check:
schema_val.remove(i)
if m_schema[1].text in schema_val:
print('pass')
这按照我想要的方式工作,但我试图理解为什么它只在我有
in
时才有效,而当我有 ==
时,代码不起作用并跳过 print
。
您想将 xml 列表值与您的架构值列表进行比较吗?
import xml.etree.ElementTree as ET
xml_str = """<metaMetadata>
<metadataSchema>Value1</metadataSchema>
<metadataSchema>Value2</metadataSchema>
</metaMetadata>"""
tree = ET.fromstring(xml_str)
l = [c.text for c in tree.findall('.//metadataSchema')]
schema_val = ['Value1', 'Value2']
if l == schema_val:
print('true')
输出:
true