对于非常大的 xml 数据来说,生成 DOM 树的成本太高。有没有一种方法可以在不生成的情况下完成打印?我正在使用 python-2.7。
最佳答案
无论使用哪种语言,在不生成树的情况下解析 XML 文档的方法是使用面向事件的解析器。使用这些类型的解析器,您可以向解析器提供一些事件处理程序,解析器将在处理的特定点调用这些事件处理程序:节点开始、节点结束、数据开始等。
因此,您可以使用这种解析器,并在每次有新节点时转到新行,并在进入节点时增加缩进,在退出节点时减少缩进。 由于这些解析器的工作方式,向前查看节点是否适合一行会很棘手,因此 pretty-print 可能不如使用树时那么漂亮(或者你可以,但它会变得复杂)。
在Python中,标准库附带了3个事件驱动的解析器(排名不分先后):
- ElementTree.iterparse()
- pyexpat
- sax (SAX是著名的事件驱动XML解析API)
我建议你看看它们并尝试玩一下。
关于python - 如何在Python中漂亮地打印xml而不生成DOM树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32623603/