如何使用 Python 将字符串匹配到映射 xml 标记?

How to match a string to mapping xml tag using Python?

我想从 XML 文件映射一个值。

<Country>
     <number no="2008" info="update">
          <detail name="man1" class="A1\X4">
               <string name="ruth" />
               <string name="amy" />
          </detail>
          <detail name="man2" class="A2">
               <string name="lisa" />
               <string name="graham" />
          </detail>
     </number>
</Country>

我需要通过映射此值 class="A1\X4"

来获取此处 我这样试过:

stringno = 'A1'
for family in ReadXML.findall('number/detail[@class="{}"]/..'.format(stringno)):
    name = family.get('no')
    print(name)

它仅在 stringno="A1\X4" 时有效。但是如果stringno = 'A1',我需要映射它。 python中有没有匹配函数可以解决这个问题?也许 -like-contain?

感谢您提供信息。

嗨,使用迭代方法怎么样。

完整代码

import xml.etree.ElementTree as ET

tree = ET.parse('myXml.xml')
root = tree.getroot()

stringno = 'A1'

for family in root.findall('number'):
    for elem in family:
        if stringno in elem.get('class'):
            print('no: {}, name: {}, class: {}'.format(family.get('no'), elem.get('name'), elem.get('class')))

输入

myXml.xml

<Country>
     <number no="2008" info="update">
          <detail name="man1" class="A1\X4">
               <string name="ruth" />
               <string name="amy" />
          </detail>
          <detail name="man2" class="A2">
               <string name="lisa" />
               <string name="graham" />
          </detail>
     </number>
     <number no="2009" info="update">
          <detail name="man1" class="A1\X5">
               <string name="ruth" />
               <string name="amy" />
          </detail>
          <detail name="man2" class="A3">
               <string name="lisa" />
               <string name="graham" />
          </detail>
     </number>
</Country>

输出

no: 2008, name: man1, class: A1\X4
no: 2009, name: man1, class: A1\X5