lxml

2009-08-06 3 views
10

में etree.tostring के डिफ़ॉल्ट खरोज बदलने मैं एक XML दस्तावेज जो मैं कर रहा हूँ lxml.etree.tostringlxml

print etree.tostring(doc, pretty_print=True) 

खरोज के डिफ़ॉल्ट स्तर 2 रिक्त स्थान है का उपयोग करते हुए बहुत-मुद्रण है, और मुझे बदलना चाहते हैं यह 4 रिक्त स्थान पर है। tostring फ़ंक्शन में इसके लिए कोई तर्क नहीं है; क्या एलसीएमएल के साथ आसानी से ऐसा करने का कोई तरीका है?

उत्तर

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