एलिमेंट ट्री का उपयोग करते हुए पायथन 2.6 में, किसी विशेष तत्व के अंदर एक्सएमएल (एक स्ट्रिंग के रूप में) लाने का एक अच्छा तरीका क्या है, जैसे आप एचटीएमएल और जावास्क्रिप्ट में innerHTML
के साथ क्या कर सकते हैं ?पायथन और एलिमेंट ट्री: मूल तत्व को छोड़कर "आंतरिक एक्सएमएल" वापस करें
This is some text <a href="foo.htm">and a link</a> in embedded HTML
मैं कोशिश की है माता पिता से अधिक पुनरावृत्ति:
<label attr="foo" attr2="bar">This is some text <a href="foo.htm">and a link</a> in embedded HTML</label>
मैं इस तार के साथ खत्म करना चाहते हैं:
यहाँ एक्सएमएल नोड के एक सरल नमूना मैं के साथ शुरू कर रहा हूँ है नोड और बच्चों की tostring()
श्रृंखलाबद्ध, लेकिन वह मुझे दिया ही subnodes:
# returns only subnodes (e.g. <a href="foo.htm">and a link</a>)
''.join([et.tostring(sub, encoding="utf-8") for sub in node])
मैं नियमित अभिव्यक्ति का उपयोग कर एक समाधान ऊपर हैक कर सकते हैं, लेकिन उम्मीद थी वहाँ कम hacky कुछ इस से होगी:
re.sub("</\w+?>\s*?$", "", re.sub("^\s*?<\w*?>", "", et.tostring(node, encoding="utf-8")))
हाय एमिल - अपने समाधान ठीक काम करता है सभी पाठ है अगर subelements के अंदर, लेकिन मेरे मामले में तोड़ता है जहां पाठ सीधे मूल तत्व के अंदर है। मिश्रित सामग्री के बारे में आपका नोट स्पष्ट रूप से यहां लागू होता है, हालांकि मुझे यकीन नहीं है कि (अभी तक) एक सुसंगत स्ट्रिंग को उत्सर्जित करने के लिए सिर, पूंछ और उपनिवेशों को एक साथ कैसे जोड़ना है। –
करीब ... लेकिन etree.tostring() में प्रत्येक उपखंड की पूंछ शामिल नहीं है। और मुझे लगता है कि अंतिम dom.tail की आवश्यकता नहीं है क्योंकि यह * तत्व * के बाद स्ट्रिंग है और इसके अंदर नहीं है। –
मुझे आपको जस्टिन समझ में नहीं आता है - 'यहां प्रारंभ करें', और 'और' यहां समाप्त 'एक पाठ है जो मूल तत्व के अंदर सही है ?! उपरोक्त स्निपेट को कुछ झुकाव की आवश्यकता हो सकती है - आप कुछ परीक्षण केस बना सकते हैं और इसे बेहतर बना सकते हैं - मिश्रित सामग्री को संभालने के तरीके पर दस्तावेज़ के लिए लिंक देखें। –