По умолчанию, когда вы вызываете ElementTree.parse (someXMLfile), библиотека Python ElementTree ставит перед каждым анализируемым узлом префикс своего URI пространства имен в нотации Кларка:
{http://example.org/namespace/spec}mynode
Это делает доступ к определенным узлам по имени огромной болью позже в коде.
Я прочитал документы по ElementTree и пространствам имен, и похоже, что функция iterparse()
должна позволить мне изменить способ, которым парсер префиксирует пространства имен, но на самом деле я не могу заставить его изменить префикс. Кажется, что это может произойти в фоновом режиме до того, как событие ns-start даже сработает, как в этом примере:
for event, elem in iterparse(source):
if event == "start-ns":
namespaces.append(elem)
elif event == "end-ns":
namespaces.pop()
else:
...
Как мне сделать так, чтобы оно изменило поведение префикса и что нужно возвращать после завершения функции?