По умолчанию, когда вы вызываете ElementTree.parse(someXMLfile), библиотека Python ElementTree префикрует каждый разобранный node с его 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:
...
Как мне изменить поведение префикса и что нужно вернуть, когда заканчивается функция?