之前我没有使用过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吗?
答案 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