Python(xml.etree)不读取XML文本

时间:2015-01-11 22:44:22

标签: python xml

之前我没有使用过XML,但是从使用以下XML获取文本时遇到了问题:

<w>
  <shortening>n</shortening>
  ūmi 
  <mor type="mor">
    <mw>
      [extra stuff]
    </mw>
    <menx>rest</menx>
    <menx>sleep</menx>
    <gra type="gra" relation="ROOT" head="0" index="1"/>
  </mor>
</w>

Element.text标记对应的w属性内部没有文本ūmi,而是None。我认为这是因为它前面有<shortening>标记。这不应该是一个Unicode问题,因为有很多其他Unicode字符读得很好(这是音译希伯来文)。

有没有一种简单的方法可以解决这个问题?这是格式错误的XML吗?

1 个答案:

答案 0 :(得分:1)

那是因为该文本本身不属于任何节点。它是之前标记的 tail 属性的文本,您可以使用缩短节点访问它,请参阅:

import xml.etree.ElementTree as ET
from StringIO import StringIO

s = '''<w>
  <shortening>n</shortening>
  ūmi 
  <mor type="mor">
    <mw>
      [extra stuff]
    </mw>
    <menx>rest</menx>
    <menx>sleep</menx>
    <gra type="gra" relation="ROOT" head="0" index="1"/>
  </mor>
</w>'''

tree = ET.parse(StringIO(s))
root = tree.getroot()

for i in root.iter('shortening'):
    print i.tail

结果:

  ūmi