Я хочу выполнить iterfind ()
для элементов, у которых есть пространство имен, но нет префикса. Я хотел бы вызвать
iterfind ([tagname])
или iterfind ([tagname], [namespace dict])
Мне не нужно каждый раз вводить тег следующим образом:
"{% s} тег"% tree.nsmap [Нет]
Подробности
Я просматриваю XML-ответ от Google API. Корневой узел определяет несколько пространств имен, включая одно, для которого нет префикса: xmlns = "http://www.w3.org/2005/Atom"
Похоже, что когда я пытаюсь выполнить поиск по etree, все работает так, как я ожидал от элементов с префиксом. например: [
>>> 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
, она не присоединит пространство имен.