Вы можете написать свою собственную версию итератора, которая делает то, что вы хотите:
from collections import namedtuple
import re
my_content = namedtuple('my_content', ['tag', 'attrib'])
def remove_namespace(name):
return re.sub('^\{[^\}]\}', '', name)
def my_iterator(root, tag=None, namespace='{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'):
iterator = root.iter() if tag is None else root.iter(namespace + tag)
for content in iterator:
tag = remove_namespace(content.tag)
attrib = {remove_namespace(key): val for key, val in content.attrib.items()}
yield my_content(tag, attrib)
Это вернет объекты, которые имеют только атрибуты tag
и attrib
.Вам нужно будет написать более сложный прокси-объект, если вы хотите более детальную функциональность.Вы можете использовать генератор в качестве замены предыдущего:
for content in my_iter(root):
print(content.tag)
и
for content in my_iter(root, 'tag'):
print(content.attrib)