सबसे आसान समाधान शायद lxml, जहां आप एक पार्सर विकल्प सेट कर सकते हैं उपयोग कर रहा है तत्वों के बीच सफेद स्थान को अनदेखा करने की:
>>> from lxml import etree
>>> parser = etree.XMLParser(remove_blank_text=True)
>>> xml_str = '''<root>
>>> <head></head>
>>> <content></content>
>>> </root>'''
>>> elem = etree.XML(xml_str, parser=parser)
>>> print etree.tostring(elem)
<root><head/><content/></root>
यह शायद अपनी आवश्यकताओं के लिए पर्याप्त होगा, लेकिन कुछ चेतावनियों सुरक्षित पर होना पक्ष:
यह सिर्फ तत्वों के बीच खाली स्थान के नोड्स निकाल देंगे, और मिश्रित सामग्री के तत्वों के अंदर खाली स्थान के नोड्स को हटाने के लिए नहीं की कोशिश:
>>> elem = etree.XML('<p> spam <a>ham</a> <a>eggs</a></p>', parser=parser)
>>> print etree.tostring(elem)
<p> spam <a>ham</a> <a>eggs</a></p>
टेक्स्टनोड से लीडिंग या पीछे वाली व्हाइटस्पेस को हटाया नहीं जाएगा। हालांकि यह कुछ परिस्थितियों में मिश्रित सामग्री से व्हाइटस्पेस नोड्स को हटा देगा: यदि पार्सर को अभी तक उस स्तर पर गैर-व्हाइटस्पेस नोड्स का सामना नहीं हुआ है।
>>> elem = etree.XML('<p><a> ham</a> <a>eggs</a></p>', parser=parser)
>>> print etree.tostring(elem)
<p><a> ham</a><a>eggs</a></p>
आपको लगता है कि नहीं करना चाहती हैं, तो आप xml:space="preserve"
, जो मान्य होंगी उपयोग कर सकते हैं। एक और विकल्प एक डीटी का उपयोग करेगा और etree.XMLParser(load_dtd=True)
का उपयोग करेगा, जहां पार्सर डीटी का उपयोग करेगा यह निर्धारित करने के लिए कि कौन सा व्हाइटस्पेस नोड महत्वपूर्ण हैं या नहीं।
उसके अलावा, आप सफेद स्थान को आप नहीं चाहते दूर करने के लिए अपने खुद के कोड लिखने के लिए होगा (वंश पुनरावृत्ति, और जहां उपयुक्त हो, सेट .text
और .tail
गुण है कि None
या रिक्त स्ट्रिंग पर केवल रिक्त स्थान होते हैं)
यह lxml का उपयोग करके पाठ नोड http://stackoverflow.com से सभी रिक्त लाइनों और व्हाइट-स्पेस को दूर करने में मदद मिल सकती/ए/1 9 3 9 6130/9 736 99 – DevC