Добавить объект пакета xml в словарь python - PullRequest
0 голосов
/ 18 февраля 2020

Я новичок в python, но каким-то образом мне удалось изучить и обновить существующий код.

Основная цель сценария python, который я изменяю, состоит в том, чтобы прочитать xml файл, проанализируйте его и создайте новый json файл. Есть много файлов python, которые используются для анализа. Я не хочу упоминать о каждой вещи здесь. Я скажу, где я получаю проблему.

В файле xml есть элемент, имеющий два одинаковых коротких имени.

enter image description here

Я хочу добавить элементы пакета в словарь. Поэтому я пытаюсь использовать приведенный ниже python код,

    def extract(elem_type, attribute): (in this case, attribute is someip_service_instance_to_machine_mappings)
      for element in arxml_element.findall(elem_type.xpath, NS_MAPPING):
        getattr(parent_package, attribute).append(elem_type(element, parent_package))
        if attribute == 'someip_service_instance_to_machine_mappings':
            print("getting parent_package attribute")
            print(getattr(parent_package, attribute))
            print('\n')

в соответствии с приведенным выше файлом xml, для элемента SOMEIP-SERVICE-INSTANCE-TO-MACHINE-MAPPING есть два коротких имени. Итак, for-l oop должен быть выполнен два раза. который выполняет (ну и хорошо). Но когда я печатаю атрибут, l oop 1-й раз: он создает словарь и помещает в него подпакет. l oop 2-й раз: перезаписывает существующий подпакет. Но я ожидаю добавить это. Ниже приведен вывод консоли

enter image description here

Но если я изменю любое из коротких имен SomeipServiceInstanceToMachineMapping на CheckSomeipServiceInstanceToMachineMapping . Затем он добавляется правильно. Ниже выводится консоль после изменения короткого имени:

enter image description here

Итак, мой вопрос: как действительно работает метод добавления в этом сценарии? Есть ли альтернатива для добавления, чтобы он мог добавить хотя бы то же короткое имя.

Извините за мой глупый вопрос: (

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