Я пытаюсь найти лучшее решение для проблемы ниже. Я использую Python, чтобы взять XML-файл, найти интересующие меня элементы и вернуть связанные с ними значения. Если элементы отсутствуют, я бы хотел вернуть нулевое, нулевое или эквивалентное значение.
В данный момент я использую синтаксис lxml и xpath, но мы находим его довольно медленным, поскольку у меня естьциклически проходить по множеству одного и того же элемента, чтобы проверить в python, существует ли значение или нет.
Я использую xpath для создания пользовательского словаря, из которого затем я могу слиться во что-то вроде Pandas.
Пример структуры:
Holding 1 - Contains 3 children
<Holding id = 1>
<Name> x </Name>
<Date> x </Date>
<Flavour> x </Flavour>
</Holding>
Holding 2 - Contains only two children
<Holding id = 2>
<Name> y </Name>
<Date> y </Date>
</Holding>
Мне нужно что-то, что, если Flavor отсутствует, возвращает значение по умолчанию.
Если я просто выберу тянуть весь текст из каждого холдинга, я заканчиваю значениями разной длины.
Список один будет иметь значения для имени, даты, вкуса. Список два будет иметь только значения для имени и даты.
Пример ниже. Я просматриваю каждое портфолио, каждый держит и вытаскивает текст для Ранга.
Dict['Rank'] = root.xpath(f'//ns:Portfolio[{each_portfolio + 1}]/ns:Holdings/*[{each_holding + 1}]/ns:Rank/text()', namespaces = {'ns' : nsurl}))
Любая помощь будет высоко ценится.