Python Разбор спецификаций c атрибутов из Dynami c XML Массив и объединение данных - PullRequest
0 голосов
/ 12 марта 2020

У меня есть 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)

Заранее благодарим за любые рекомендации ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...