Пожалуйста, помогите сделать 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
поведение.
Обновить
Делая больше тестов, я обнаружил, что это происходит каждый раз, когда тег имеет пространство имен не по умолчанию.
использование getelementpath()
и пространство имен постобработки, как вам нравится.
Других решений пока нет …