разбираемый xml содержит
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0“ xmlns:l=”http://www.w3.org/1999/xlink">
поэтому установлен namespace по умолчанию.
в результате пути поиска получаются пррредлллинные:
'{http://www.gribuser.ru/xml/fictionbook/2.0}body/{http://www.gribuser.ru/xml/fictionbook/2.0}cody'
Вопрос - как сделать покороче пути для поиска элементов
я конечно обошелся:
class Turins(object):
def __init__(self,pref):
self.pref=pref
def __call__(self,ss):
return re.sub(r"([A-z0-9\-]+)",self.pref+r"\1",ss)
prf="{http://www.gribuser.ru/xml/fictionbook/2.0}"
_=Turins(prf)
root.find(_("description/title-info"))
знаю что в lxml можно установить namespaces={“shortname”:"http://www.gribuser.ru/xml/fictionbook/2.0"} но у меня не lxml да и не очень это красиво все равно.
Все это выглядит очень странно. Неужели одной строчкой в начале xml можно сделать нечитаемыми все пути XPath и нет никакого пути просто описать эту гадость?
Отношу это к моему слабому знанию XPath и исходной нелюбви к дурацкому(по моему мнению) формату xml.