pprint.PrettyPrinter
该pprint
模块的文档提到该方法PrettyPrinter.format
旨在使自定义格式化成为可能.
我认为可以在子类中重写此方法,但这似乎没有提供让基类方法应用换行和缩进的方法.
我已经检查了pretty
模块,看起来很有趣,但似乎没有提供一种方法来自定义其他模块的类格式而无需修改这些模块.
我认为我正在寻找的东西可以让我提供类型(或可能是函数)的映射,这些类型可以识别处理节点的例程的类型.处理节点的例程将获取一个节点并返回它的字符串表示以及子节点列表.等等.
我的目标是紧凑地打印DocBook格式的自定义格式部分xml.etree.ElementTree
.
(我很惊讶没有找到更多Python支持DocBook.也许我错过了那些东西.)
我在一个名为xmlearn的客户端中构建了一些使用lxml的基本功能.例如,要转储Docbook文件,您可以:
xmlearn -i docbook_file.xml dump -f docbook -r book
Run Code Online (Sandbox Code Playgroud)
这是相当半屁股,但它让我得到了我正在寻找的信息.
xmlearn还具有其他功能,例如构建图形图像的能力以及显示XML文档中标记之间关系的转储.这些与这个问题完全无关.
您还可以执行转储到任意深度,或将XPath指定为一组起始点.XPath的东西有点过时了特定于docbook的格式,所以它并没有真正发展完善.
这仍然不是这个问题的答案.我仍然希望那里有一个可以随意定制的漂亮打印机.