我有一些使用 ElementTree 的 python xml 代码,它编写了一个非常丑陋的 xml 文件。我想让 xml 文件更具可读性。但是 ElementTree 没有漂亮的打印功能。在文档中 ElementTree 显示了一个“缩进”方法。当我尝试使用此缩进方法时,出现以下错误。
Traceback (most recent call last):
File "/cygdrive/c/data/path/myFile.py", line 756, in <module>
main()
...
self.writeXML()
File "/cygdrive/c/data/path/myFile.py", line 248, in writeXML
self.indent(root)
File "/cygdrive/c/data/path/myFile.py", line 252, in indent
i = "\n" + level*" "
TypeError: object cannot be interpreted as an index
def writeXML(self):
root = self.myTree.getroot()
self.indent(root)
self.myTree.write(self.myXML)
def indent(elem, level=0):
i = "\n" + level*" " #Error Here!!
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
我是否错误地使用缩进?还是这段代码有错误?有什么更容易打印的建议吗?
历史:我曾经使用过打印漂亮的 PyXML。但是,当我使用 python 2.6 时,PyXML 已经死了。lxml 具有漂亮的打印效果,但不会安装在我的系统上。因此,我将所有代码都转换为使用 ElementTree,因为我知道它可以工作并且具有我需要的大部分基本功能。