Python lxml iterfind с пространством имен, но префикс = None

Я хочу выполнить 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 , она не присоединит пространство имен.

6
задан JellicleCat 24 June 2011 в 00:14
поделиться