sorun şudur: Bir XML parçası şöyle var: - ve <c>
-Tags ama onların (metin) -contents ve childNodes sadece korumak sonuç içinlxml'de bir etiketi nasıl kaldırırım ancak tüm içeriği koruyabilirim?
<fragment>text1 <a>inner1 </a>text2 <b>inner2</b> <c>t</c>ext3</fragment>
, tüm <a>
kaldırmak istiyor oldukları gibi. Ayrıca, <b>
-Eleman dokunulmadan bırakılmalıdır. Sonuç daha sonra ben çok kirli bir hile dönmek edeceğiz an için böylece
<fragment>text1 inner<d>1</d> text2 <b>inner2</b> text3</fragment>
görünmelidir: Ben, fragman etree.tostring regex aracılığıyla kusurlu etiketlerini kaldırmak ve orijinal parçasını değiştiririz Bunun etree.fromstring sonucu (değil gerçek kod, ancak böyle bir şey gitmeli): Ben muhtemelen bunu başarmak için xslt kullanabileceğinizi biliyor
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)
ve bunun lxml XSLT'de yararlanabilir biliyorum ama daha lxml doğal bir yaklaşım olmalı?
Referans için: lxml'nin element.replace ile oraya gitmeyi denedim, ancak daha önce bir eleman düğümü bulunan metin eklemek istediğimden, bunu yapabileceğimi sanmıyorum.
Teşekkürler, bu mükemmel çalışıyor. "Şeridi" terimi bana gelmedi, ya da ben kendi kendime cevap bulabilirdim :) – Thor
Cidden. PyCon 2011'de mi olacaksın? Eğer öyleyse, size bir bira ya da tercih ettiğiniz içecek ne olursa olsun. Sadece benim gecemi yaptım :) – mkelley33
Ayrıca harika: '' etree.strip_elements (parça, * ['tag1', 'tag2']) '' – mkelley33