समस्या यह है: मैं बहुत की तरह एक XML टुकड़ा है: - और <c>
-Tags, लेकिन उनके (पाठ) -contents, और childNodes बस बनाए रखनेlxml में, मैं एक टैग कैसे हटा सकता हूं लेकिन सभी सामग्री को बरकरार रखता हूं?
<fragment>text1 <a>inner1 </a>text2 <b>inner2</b> <c>t</c>ext3</fragment>
परिणाम के लिए, मैं सब <a>
निकालना चाहते हैं जैसे वो हे वैसे। इसके अलावा, <b>
-Element को छूटा नहीं छोड़ा जाना चाहिए। परिणाम तो दिखना चाहिए इस प्रकार
<fragment>text1 inner<d>1</d> text2 <b>inner2</b> text3</fragment>
कुछ समय के लिए, मैं एक बहुत ही गंदा चाल पर वापस लौटने देंगे: मैं टुकड़ा etree.tostring होगा, regex के माध्यम से हमलावर टैग हटा दें, और के साथ मूल टुकड़ा की जगह इस के etree.fromstring परिणाम (नहीं वास्तविक कोड है, लेकिन कुछ इस तरह जाना चाहिए):
from lxml import etree
fragment = etree.fromstring("<fragment>text1 <a>inner1 </a>text2 <b>inner2</b> <c>t</c>ext3</fragment>")
fstring = etree.tostring(fragment)
fstring = fstring.replace("<a>","")
fstring = fstring.replace("</a>","")
fstring = fstring.replace("<c>","")
fstring = fstring.replace("</c>","")
fragment = etree.fromstring(fstring)
मुझे पता है कि मैं शायद इस लक्ष्य को हासिल करने के लिए उपयोग कर सकते हैं xslt, और मुझे पता है कि lxml xslt का उपयोग कर सकते , लेकिन एक और अधिक एलएक्सएमएल मूल दृष्टिकोण होना चाहिए?
संदर्भ के लिए: मैंने lxml के element.replace के साथ वहां पहुंचने का प्रयास किया है, लेकिन चूंकि मैं टेक्स्ट को सम्मिलित करना चाहता हूं जहां पहले कोई तत्व नोड था, मुझे नहीं लगता कि मैं ऐसा कर सकता हूं।
धन्यवाद, यह पूरी तरह से काम करता है। "स्ट्रिप" शब्द मेरे लिए नहीं हुआ था, या मुझे खुद का जवाब मिल गया होगा :) – Thor
गंभीरता से। क्या आप पिकॉन 2011 में होंगे? यदि ऐसा है, तो मुझे आपको एक बियर, या जो भी आपका पसंदीदा पेय खरीदते हैं। आपने अभी मेरी रात बनाई है :) – mkelley33
भी कमाल: 'etree.strip_elements (खंड, * ['टैग 1', 'टैग 2'])' ' – mkelley33