У меня есть следующий xml, который будет иметь несколько элементов shareclass (немногие будут иметь код AMFI, а некоторые не будут). Для простоты обоих элементов в моем shareclass я дал код AMFI для кода элемента xml. Я хочу получить значение кода AMFI (если есть) и его идентификатор shareclass. Теперь я не могу зациклить правильно, чтобы получить данные. Я использую цикл неправильно или XML ведет себя таким образом? Любая помощь приветствуется
<Feed xmlns="xxxxx" Version="1.01.021">
<AssetOverview Id="36113117">
<ShareClasses>
<ShareClass Id="68016655">
<Profile>
<CrossReferenceCodes>
<Code Type="RIC" Id="1000026">LP68016655</Code>
<Code Type="ISIN Code" Id="1001424">INF209K01264</Code>
<Code Type="ISIN Currency Class" Id="1005394">INF209K01264.INR</Code>
<Code Type="AMFI Code" Id="1010560">112088</Code>
<Code Type="Perm ID" Id="1036941">18068016655</Code>
</CrossReferenceCodes>
</Profile>
</ShareClass>
<ShareClass Id="68016656">
<Profile>
<CrossReferenceCodes>
<Code Type="RIC" Id="1000026">LP68016656</Code>
<Code Type="ISIN Code" Id="1001424">INF209K01256</Code>
<Code Type="ISIN Currency Class" Id="1005394">INF209K01256.INR</Code>
<Code Type="AMFI Code" Id="1010560">112087</Code>
<Code Type="Perm ID" Id="1036941">18068016656</Code>
</CrossReferenceCodes>
</Profile>
</ShareClass>
</ShareClasses>
</AssetOverview>
</Feed>
Мой код Python
tree = ET.parse('test.xml')
namespace = get_namespace(tree.getroot())
root = tree.getroot()
for child in root:
for code1 in root.findall("./{}AssetOverview/{}ShareClasses/{}ShareClass/{}Profile/{}CrossReferenceCodes/{}Code".format(namespace,namespace,namespace,namespace,namespace,namespace)):
if 'AMFI Code' in code1.attrib.values():
print(code1.text)
for code in root.findall("./{}AssetOverview/{}ShareClasses/{}ShareClass".format(namespace,namespace,namespace)):
print(code.attrib['Id'])
Мой вывод
112088
68016655
68016656
112087
68016655
68016656
Желаемый вывод
112088,68016655
112087,68016656