Я хочу выполнить iterfind()
для элементов, которые имеют пространство имен, но не имеют префикса.Я хотел бы позвонить
iterfind([tagname])
или iterfind([tagname], [namespace dict])
. Я не хочу каждый раз вводить тег следующим образом:
"{%s}tagname" % tree.nsmap[None]
Подробности
Я работаю с xml-ответом от Google API.Корневой узел определяет несколько пространств имен, в том числе одно, для которого нет префикса: xmlns="http://www.w3.org/2005/Atom"
Похоже, что когда я пытаюсь выполнить поиск по моему этри, все ведет себя так, как я ожидаю для элементов с префиксом.Например:
>>> for x in root.iterfind('dxp:segment'): print x
...
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211b98>
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211d78>
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211a08>
>>>
Но когда я пытаюсь найти что-то без префикса, поиск не добавляет автоматически пространство имен для root.nsmap[None]
.Например:
>>> for x in root.iterfind('entry'): print x
...
>>>
Даже если я попытаюсь добавить карту пространства имен в качестве необязательного аргумента для iterfind
, он не присоединит пространство имен.