lxml._ElementTree.getpath (element) возвращает & quot; * & quot; вместо имен тегов для элементов в пространстве имен не по умолчанию

Пожалуйста, помогите сделать getpath() вернуть полные имена тегов в getpath() xpath или найти обходной путь

Я пытаюсь сгенерировать xpath для элемента в lxml.etree._ElementTree, ElementTree генерируется синтаксическим анализом ответа 600Kb от некоторого рабочего WebService.

print elem.getroottree().getpath(elem)

Вот результат, который я получаю:

'/S:Envelope/S:Body/ns5:getPhysicalResponse/*[18]/*[12]/*[6]/*[2]'

К сожалению, я не могу опубликовать оригинальный XML — он содержит конфиденциальную информацию о клиентах.
Также я попытался воспроизвести этот результат с помощью автоматически сгенерированного простого дерева элементов, которое имеет 100 вложенных уровней, каждый уровень имеет 100 дочерних элементов, но без удачи — getpath() вернул xpath с полными именами тегов.

Обновить
Глядя в lxml исходный код — это указывает на tree.h xmlGetNodePath метод из libxml2 библиотека. Так что это на самом деле libxml2 поведение.

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

4

Решение

использование getelementpath() и пространство имен постобработки, как вам нравится.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]