У меня есть XML данные, которые я получаю с URL-адреса, который мне нужен для анализа указанных c элементов / атрибутов и назначения их переменным, чтобы впоследствии я мог записать их в XLSX. Я застреваю при попытке объединить переменные в красивый список, чтобы они были в порядке. Уровень SkillNameUriPair / компетенции является динамическим c в том смысле, что некоторые ресурсы имеют его, а некоторые нет, а некоторые могут иметь кратные. Как мне объединить то, что я там получу, с userID, firstName и т. Д. c?
Я собираюсь здесь около 3 недель программировать с Python без предварительного опыта программирования, за исключением гуглинга. Любой совет будет принята с благодарностью! Надеюсь, что я что-то упускаю.
Пример XML Файл:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<resources>
<resource>
<self>https://abc.local/adminapi/resource/jon</self>
<userID>jon</userID>
<firstName>Jon</firstName>
<lastName>Smith</lastName>
<extension>1498</extension>
<skillMap>
<skillCompetency>
<competencelevel>5</competencelevel>
<skillNameUriPair name="Test">
<refURL>https://abc.local/adminapi/skill/3</refURL>
</skillNameUriPair>
</skillCompetency>
<skillCompetency>
<competencelevel>5</competencelevel>
<skillNameUriPair name="CallCenter">
<refURL>https://abc.local/adminapi/skill/2</refURL>
</skillNameUriPair>
</skillCompetency>
</skillMap>
</resource>
<resource>
<self>https://abc.local/adminapi/resource/MMath</self>
<userID>mikem</userID>
<firstName>Mike</firstName>
<lastName>Math</lastName>
<extension>1303</extension>
<skillMap/>
</resource>
</resources>
Желаемый результат:
[(userID, firstName, lastName, расширение ,] (skillNameUriPair, уровень компетенции), (skillNameUriPair, уровень компетенции), (skillNameUriPair, уровень компетенции), (skillNameUriPair, уровень компетенции)]]
[('jon', 'Jon', 'Smith', '1498' , Нет,) ('mmath', 'Mike', 'Math', '1303', [('5', 'Test'), ('5', 'CallCenter')]]
Текущий фрагмент кода:
tree = ET.ElementTree(ET.fromstring(response.content))
resource = tree.findall('./resource')
for child in resource:
userID = child.find('userID').text
firstName = child.find('firstName').text
lastName = child.find('lastName').text
extension = child.find('extension').text
skillMap = child.find('skillMap')
for child_b in skillMap:
child_c = child_b.findall('competencelevel')
child_d = child_b.findall('skillNameUriPair')
for clevel in child_c:
competencelevel = clevel.text
for skills in child_d:
skillNameUriPair = skills.get('name')
values = competencelevel, skillNameUriPair
skill.append(values)
value = userID, firstName, lastName, extension, skill
list.append(value)
print(list)
Заранее благодарим за любые рекомендации ...