Это мой образец XML. В действительности у меня есть несколько стеков «сущности», которые представляют одну строку данных в желаемом результате. Чтобы сохранить пространство, я вставил только один экземпляр «сущности» здесь: < / p > < b r / > < c o d e > & l t ; E n t i t y C o l l e c t i o n & g t ; < b r / > < b r / > & l t ; E n t i t i e s & g t ; < b r / > < b r / > & l t ; E n t i t y & g t ; < b r / > < b r / > & l t ; A t t r i b u t e s & g t ; < b r / > < b r / > & l t ; K e y V a l u e P a i r O f s t r i n g a n y T y p e & g t ; < b r / > < b r / > & l t ; k e y & g t ; c l i e n t _ n u m b e r & l t ; / k e y & g t ; < b r / > < b r / > & l t ; v a l u e t y p e = & q u o t ; b : s t r i n g & q u o t ; & g t ; A B C 1 2 3 3 4 5 & l t ; / v a l u e & g t ; < b r / > < b r / > & l t ; / K e y V a l u e P a i r O f s t r i n g a n y T y p e & g t ; < b r / > < b r / > & l t ; K e y V a l u e P a i r O f s t r i n g a n y T y p e & g t ; < b r / > < b r / > & l t ; k e y & g t ; m y _ d a t a . c l i e n t _ type
my_type
my_data1
true
123
345
my_data.status
status
my_data1
true
123
67
my_data.date
date
my_data1
true
89
2024-01-01
my_data.country
country
my_data1
true
123
456
client_code
some_code456
my_data.my_data1id
my_data1id
my_data1
true
13
some_code123
my_data.client_type
client123
my_data.status
OK
my_data.country
some_country
some_code456
some-id
ID123
< /code>
Элементы в 'key' (или в 'attributeLogicalName') должны быть заголовками. Значение «значение»/«» должно быть фактическими данными. Это желаемый результат (первая строка).
Поскольку данные очень вложены, я попытался использовать xml.etree, но не зашел очень далеко, насколько я не уверен, как приступить к форме: < /p>
Код: Выделить всё
for _, elem in ET.iterparse(my_xml):
if len(elem) == 0:
print(f'{elem.tag} {elem.attrib} text={elem.text}')
else:
print(f'{elem.tag} {elem.attrib}')
Подробнее здесь: https://stackoverflow.com/questions/789 ... -dataframe
Мобильная версия