我试图从xml文件(GPX)中提取与我的gpx文件的路径点相关的所有信息与lxml库。 我的gpx文件有一部分。
<?xml version="1.0"?>
<gpx
version="1.0"
creator="GPSBabel - http://www.gpsbabel.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/0"
xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
<time>2006-01-23T02:00:28Z</time>
<trk>
<name>08-JAN-06 02</name>
<trkseg>
<trkpt lat="-33.903422356" lon="151.175565720">
<ele>19.844360</ele>
<time>2006-01-08T06:45:07Z</time>
</trkpt>
</trkseg>
</trk>
</gpx>
我可以通过以下方式获得点纬度和经度:
node.get("lon") and node.get("lat")
但是当我试着抽出时间时:
for element in root:
if element.tag=="{http://www.topografix.com/GPX/1/0}time":
time=str(element.text)
我终于得到了这样的结果
(1.45,32.12,'')
时间的空白值我该如何解决?
答案 0 :(得分:0)
我假设有一个if ($user ~* "(?<p>[aa-zZ]+)@example.com")
{
set $xuser $p;
}
和一个</trk>
标签应该在您发布的内容的末尾,否则会出现格式错误。
我将以非常冗长的方式写出来。首先,让我们假设您有一个包含xml的lxml对象 - 我们将其称为</trkseg>
。
如有必要,首先定义您的命名空间:
tree
我喜欢使用XPath查询。如果您尝试查询ns = {'gpx': 'http://www.topografix.com/GPX/1/0'}
并获取未定义的命名空间错误,请再次指定命名空间参数 - 您必须在xpath表达式前加上键,如tree.xpath('//trk')
现在您想获得所有tree.xpath('//gpx:trk', namespaces=ns)
个对象的列表:
trk
如果没有trk_objects = tree.xpath('//gpx:trk', namespaces=ns)
标签,这将返回它们的列表或空列表。
然后你想迭代它们(我假设每个trk
标签只有一个trkseg
标签,你需要使用名称空间):
trk