Короткий ответ:
ElementTree._namspace_map[ElementTree._namspace_map.values().index('')]
, но только если вы звоните
ElementTree.register_namespace(prefix,uri)
в ответ на каждое событие == "start-ns" получен во время итерации по результату
ET.iterparse(...)
, и вы зарегистрировались для "start-ns"
Ответ на вопрос "что такое пространство имен по умолчанию?", необходимо уточнить два момента:
(1) Спецификации XML говорят, что пространство имен по умолчанию не обязательно является глобальным по всему дереву, а пространство имен по умолчанию может быть повторно объявлено в любом элементе в корневом каталоге и наследуетсявниз до встречи с другим повторным объявлением пространства имен по умолчанию.
(2) Модуль ElementTree может (де-факто) обрабатывать XML-подобные документы, которые не имеют корневого пространства имен по умолчанию, - если они не используются пространством имен где-либо вдокумент.(* могут быть менее строгие условия, например, «если» и необязательно «если»).
Вероятно, стоит подумать, "для чего ты этого хочешь?"Учтите, что файлы XML могут быть семантически эквивалентными, но синтаксически сильно отличаться.Например, следующие три файла семантически эквивалентны, но A.xml имеет одно объявление пространства имен по умолчанию, B.xml имеет три, а C.xml не имеет ни одного.
A.xml:
<a xlmns="http://A" xlmns:nsB0="http://B0" xlmns:nsB1="http://B1">
<nsB0:b/>
<nsB1:b/>
</a>
B.xml:
<a xlmns="http://A">
<b xlmns="http://B0"/>
<b xlmns="http://B1"/>
</a>
C.xml:
<{http://A}a>
<{http://B0}b/>
<{http://B1}b/>
</a>
Файл C.xml является каноническимрасширенное синтаксическое представление, представленное поисковым функциям ElementTree.
Если вы уверены, что априори не будет столкновений пространства имен, вы можете изменить теги элемента при анализе, как обсуждалось здесь: Модуль Python ElementTree: Какигнорировать пространство имен файлов XML для поиска соответствующего элемента при использовании методов «find», «findall»