2015-11-13 85 views
-1

所以我新使用python。我试图从xml文档中移除一个xml标签。试图删除所有<tag2></tag2>标签,但保留“foo”和“bar”。建议?试图避免LXML使用Python 3.5删除xml标记

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

编辑: 这就是我需要的输出为

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) 

或David Zemens

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

'text = [child.text for tree.iter()如果不是child.text.strip()='']'? –

+0

啊,那好多了。谢谢@DavidZemens! –