我可以使用ElementTree来获取XML文件的完整结构吗?

时间:2015-09-11 02:10:47

标签: python xml elementtree

假设我的xml看起来像这样:

<stuff>fee <i>italic</i> fie <b>bold</b> foe</stuff> 

如果我使用ElementTree解析它,我可以使用iter()来访问子元素,我可以使用itertext()来访问文本元素,但是如何访问它们呢?换句话说,我想迭代<stuff>并得到:

text "fee "
element <i>
text " fie "
element <b>
text " foe"

这可能(并且容易),还是我使用了错误的解析器?

2 个答案:

答案 0 :(得分:2)

这是你在找什么?

for e in tree.iter():
  yield e
  try:
     yield e.text
  except:
     continue

答案 1 :(得分:2)

您需要获取所有子元素的尾部以获取所有内容的文本:

>>> import xml.etree.ElementTree as ET
>>> root = ET.fromstring('<stuff>fee <i>italic</i> fie <b>bold</b> foe</stuff>')
>>> print('Text:', root.text)
>>> for child in root:
...     print('Element:', child.tag)
...     print('Text:', child.tail)
Text: fee 
Element: i
Text:  fie 
Element: b
Text:  foe