代码之家  ›  专栏  ›  技术社区  ›  Eli Courtwright

更改lxml中etree.toString的默认缩进

  •  11
  • Eli Courtwright  · 技术社区  · 15 年前

    我有一个XML文档,我正在使用 lxml.etree.tostring

    print etree.tostring(doc, pretty_print=True)
    

    默认缩进级别为2个空格,我想将其更改为4个空格。在 tostring 函数;是否有一种方法可以轻松地使用lxml?

    1 回复  |  直到 15 年前
        1
  •  5
  •   ThibThib    15 年前

    正如所说的 this thread ,没有真正的方法来更改 lxml.etree.tostring 漂亮的印刷品。

    但是,你可以:

    • 添加XSLT转换以更改缩进
    • 在树中添加空白,类似于 cElementTree 图书馆

    代码:

    def indent(elem, level=0):
        i = "\n" + level*"  "
        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