2009-08-06 3 views
10

У меня есть документ XML, который я довольно-печать с использованием lxml.etree.tostringИзменение отступов по умолчанию etree.tostring в LXML

print etree.tostring(doc, pretty_print=True) 

По умолчанию уровень отступа 2 пробела, и я хотел бы изменить это 4 пробела. Для функции tostring нет никаких аргументов; есть ли способ сделать это легко с помощью lxml?

ответ

4

Как указано в 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 
Смежные вопросы