我有一个带有如下节点的 XML 文件:
<trkpt lat="-37.7944415" lon="144.9616159">
<ele>41.3681107</ele>
<time>2015-04-11T03:52:33.000Z</time>
<speed>3.9598</speed>
</trkpt>
我正在使用 lxml.etree.iterparse() 迭代解析树。我循环遍历每个 trkpt 元素的子节点,并希望打印子节点的文本值。例如
for event, element in etree.iterparse(infile, events=("start", "end")):
if element.tag == NAMESPACE + 'trkpt':
for child in list(element):
print child.text
问题是在这个阶段节点没有文本,所以打印的输出是'None'。
我已经通过用'print etree.tostring(child)'替换'print child.text'语句来验证这一点,输出看起来像这样
<ele/>
<time/>
<speed/>
根据文档,“请注意,在收到开始事件时,元素的文本、尾部和子项不一定存在。只有结束事件才能保证元素已被完全解析。”
所以我把我的for循环改成了这个,注意'if event == "end":'语句
for event, element in etree.iterparse(infile, events=("start", "end")):
if element.tag == NAMESPACE + 'trkpt':
if event == "end":
for child in list(element):
print child.text
但我仍然得到相同的结果。任何帮助将不胜感激。