使用してきれいに印刷しているXMLドキュメントがありますlxml.etree.tostring
print etree.tostring(doc, pretty_print=True)
デフォルトのインデント レベルはスペース 2 つですが、これをスペース 4 つに変更したいと考えています。tostring
関数にはこれに対する引数はありません。lxmlでこれを簡単に行う方法はありますか?
使用してきれいに印刷しているXMLドキュメントがありますlxml.etree.tostring
print etree.tostring(doc, pretty_print=True)
デフォルトのインデント レベルはスペース 2 つですが、これをスペース 4 つに変更したいと考えています。tostring
関数にはこれに対する引数はありません。lxmlでこれを簡単に行う方法はありますか?
このスレッドで述べたように、 lxml.etree.tostring
pretty-printのインデントを変更する実際の方法はありません。
でも君ならできる:
コード:
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