ElementTree(Python 2.7)没有看到根元素的属性,例如,标记<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
- 得到一个空字典。我希望“在运行中”获取用于处理标记的命名空间。库xml.dom.minidom工作正常,但我不想丢失ET的功能。代码示例:
from xml.etree import ElementTree as ET
import zipfile
path = '/path/to/sample.docx'
zf = zipfile.ZipFile(path, 'r')
root = ET.fromstring(zf.read('word/document.xml'))
print(root.tag, root.attrib) # =>
# ('{http://schemas.openxmlformats.org/wordprocessingml/2006/main}document', {})
答案 0 :(得分:2)
XML命名空间声明(以xmlns开头的东西:)不是属性。我认为这就是为什么你没有看到它出现在attrib词典中的原因。还有其他方法可以使用命名空间,因此如果您可以更多地了解您正在努力服务的目的,我可能会提供更多帮助。
WordprocessingML元素的名称空间(及其前缀)是众所周知和记录的,数量相对较少。在大多数文档中,最多只有几十个,只有少数几个。因此,根据您尝试完成的任务,它可能比看起来更容易完成。