2009-08-06 26 views
10

Tôi có một tài liệu XML mà tôi khá-in sử dụng lxml.etree.tostringThay đổi thụt đầu dòng mặc định của etree.tostring trong lxml

print etree.tostring(doc, pretty_print=True) 

Mức mặc định của thụt đầu dòng là 2 không gian, và tôi muốn thay đổi này đến 4 không gian. Không có bất kỳ đối số nào cho hàm này trong hàm tostring; có cách nào để làm điều này một cách dễ dàng với lxml?

Trả lời

4

Như đã nói trong this thread, không có cách nào thực sự để thay đổi thụt lề của lxml.etree.tostring in đẹp.

Tuy nhiên, bạn có thể:

  • thêm một XSLT chuyển đổi để thay đổi thụt
  • thêm khoảng trắng vào cây, với một cái gì đó giống như trong thư viện cElementTree

mã:

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 
Các vấn đề liên quan