我可以使用 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
假设我的 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