2014-04-20 44 views
3

解析我需要解析的XML看起來像:XML與ElementTree的和多元素

<tag> 
    text1 text2 text3 
    <some-tag/> 
     More text 
    <some-tag/> 
     Some more text 
    <some-tag/> 
    Even more text 
</tag> 

使用ElementTree的頭部和尾部的方法,我能得到「文本1文本2文字3」和「更文本」。

但是,我無法想出一種方法來達到中間的文本(「更多文本」和「更多文本」)。由於生成XML的軟件的特殊性,我不能確定這些雜散標籤,因此不能使用find('some-tag')命令。

有什麼辦法可以用python解析這個XML嗎?

感謝

回答

3

More textSome more textsome-tag尾巴。請參閱以下內容:

>>> import xml.etree.cElementTree as et 
>>> text = """<tag> 
    text1 text2 text3 
    <some-tag/> 
     More text 
    <some-tag/> 
     Some more text 
    <some-tag/> 
    Even more text 
</tag>""" 
>>> root = et.fromstring(text) 
>>> for element in root: # leaving aside the text and tail of root for the moment 
    print element.tag, ': text =>', element.text or '', 'tail =>', element.tail 

some-tag : text => tail => # the tail also has a newline character and white space at its beginning 
     More text 

some-tag : text => tail => 
     Some more text 

some-tag : text => tail => 
    Even more text 

因此,您需要遍歷每個元素的子元素以查看子元素是否有尾。

+1

謝謝。這是完美的。 – Suvir

+1

@Suvir樂於幫助! –