Как я могу проверить наличие тегов в XML перед разбором с помощью ElementTree?

Метод, который установит свойство с заданным именем:

    public void SetProperty(String propertyName, object value)
    {
        this.GetType().GetProperty(propertyName).SetValue(this, value);
    }

Несколько вещей о реализации:

  • Используемый тип - это динамический фактический тип объект, который найдет элементы, которые находятся в производных классах (до тех пор, пока объект имеет производный тип курса).
  • Информация о свойствах не имеет представления о том, из какого объекта она появилась, поэтому this необходимо снова передать в вызов SetValue().

Вторая часть вашего вопроса, чтобы перебирать список свойств, может быть решена с помощью GetProperties(), чтобы получить все свойства объекта, включая унаследованные:

var properties = this.GetType().GetProperties();
0
задан user2774460 17 January 2019 в 05:32
поделиться

1 ответ

Попробуйте использовать xpath , чтобы найти нужные теги, например, вы можете заменить этот код:

Phone = element[3][0].text
phone_list.append(Phone)
AreaCode = element[3][1].text
phone_list.append(AreaCode)
person.append(phone_list)

примерно так:

phone_list = [e.text for e in element.findall('Phone//')]
person.append(phone_list)

или это (на мой взгляд, лучший вариант):

person.append([e.text for e in element.findall('Phone//')])

Таким образом, вы сможете обойти ошибку и значительно сократить объем кода:)

0
ответ дан Andrey Kostrenko 17 January 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: