2015-11-13 4 views
-1

Итак, я новичок в python. Я пытаюсь удалить тэг xml из XML-документа. Пытается удалить ВСЕ <tag2> и </tag2> теги, но сохраните «foo» и «bar». Предложения? Пытаясь избежать LXMLУдалить xml-теги, используя Python 3.5

<entry name="xml"> 
    <tag> 
     <tag2>foo</tag2> 
    </tag> 
    <tag3> 
     <tag2>bar</tag2> 
    </tag3> 
    <tag4> 
     <tag2>foo</tag2> 
    </tag4> 
    <tag5> 
     <tag2>bar</tag2> 
    </tag5> 
    </entry> 

EDIT: Вот что мне нужно вывод, что

entry name="xml"> 
    <tag> 
     foo 
    </tag> 
    <tag3> 
     bar 
    </tag3> 
    <tag4> 
     foo 
    </tag4> 
    <tag5> 
     bar 
    </tag5> 
    </entry> 
+1

Что бы желаемый результат в этом случае? И что ты пробовал? Благодарю. – alecxe

+0

Что вы попробовали? Вы знаете о https://docs.python.org/3.5/library/xml.html – lodo

+0

Вы имеете в виду разбор и обработку XML-документа без использования синтаксического анализатора XML? Вы не будете очень далеко делать это ... –

ответ

3

Вы можете перебрать дерева элементов с XML. Это создает список всех тегов с текстом в них.

import xml.etree.ElementTree as ET 

tree = ET.parse('x.xml') 
root = tree.getroot() 

text = [] 
for child in tree.iter(): 
    if '\n' not in child.text: 
     text.append(child.text) 

Или проще заявление Дэвида Zemens

text = [child.text for child in tree.iter() if not child.text.strip() == ''] 
+0

'text = [child.text для child в tree.iter(), если не child.text.strip() = '']'? –

+0

А, это намного лучше. Спасибо @DavidZemens! –