如何使用 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
我想从 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