【发布时间】:2015-09-11 02:10:46
【问题描述】:
假设我的 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"
这可能(并且容易),还是我使用了错误的解析器?
【问题讨论】:
-
您也可以考虑使用
.xpath():from lxml import etree / stuff = etree.fromstring('<stuff>fee <i>italic</i> fie <b>bold</b> foe</stuff>') / for node in stuff.xpath("child::node()"): print type(node), node我意识到这不是通常惯用的 ElementTree 做事方式,而且问题中的案例很简单,我想这并不重要你用的太多了;但是在更复杂的情况下,例如,当您只想选择特定元素或与特定子字符串匹配的特定文本节点时,它可能是获取它们的有效方法
标签: python xml elementtree