列表比较“==”与“in”与elementtree

问题描述 投票:0回答:1

我正在解析一个 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

python elementtree
1个回答
0
投票

您想将 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

© www.soinside.com 2019 - 2024. All rights reserved.