문제는 이것이다 : 나는 XML 조각과 같이 가지고있다 -과 <c>
-Tags, 그러나 그들의 (텍스트) 옵션 의상과 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 정규식을 통해 잘못된 태그를 제거하고 원래 조각을 대체 할 수 있습니다 이것의 etree.fromstring 결과 (안 실제 코드는하지만,이 같은 가야) : 나는 아마 이것을 달성하기 위해 XSLT를 사용할 수 있다는 것을 알고
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)
을, 나는 그 LXML는 XSLT의 사용을 만들 수있어 ,하지만 더 많은 lxml 네이티브 접근 방식이 있어야합니까?
참고 : 나는 lxml의 element.replace를 가지고 거기에 도달하려고 시도했지만, 전에 요소 노드가있는 곳에 텍스트를 삽입하고 싶기 때문에 그렇게 할 수 있다고 생각하지 않습니다.
감사합니다. 완벽하게 작동합니다. "스트립"이라는 단어가 나에게 발생하지 않았거나 직접 대답을 찾았을 수도 있습니다. – Thor
진지하게. PyCon 2011에 갈 예정입니까? 그렇다면 맥주 나 다른 음료를 사주 게하십시오. 당신은 방금 내 밤을 만들었습니다 :) – mkelley33
또한 끝내줍니다 :''etree.strip_elements (조각, * [ 'tag1', 'tag2'])'' – mkelley33