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

Can I use ElementTree to get the full structure of an XML file?

假设我的 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"

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

这是您要找的吗?

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

您需要获取所有子元素的尾部才能获取 stuff 的所有文本:

>>> 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