2009-08-06 32 views
10

etree.tostring的默認縮進我有我使用lxml.etree.tostring改變LXML

print etree.tostring(doc, pretty_print=True) 

壓痕的默認級別爲2個空格的格式打印XML文檔,我想改變這到4個空格。在tostring函數中沒有任何爭論;有沒有一種方法可以輕鬆地使用lxml來做到這一點?

回答

4

正如在this thread中所說,沒有真正的方法來改變漂亮打印的縮進。

但是,你可以:

  • 添加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