GPXXMLSyntaxException:解析错误 XML:格式不正确(无效标记):第 1 行,第 11 列
GPXXMLSyntaxException: Error parsing XML: not well-formed (invalid token): line 1, column 11
我在像这样解析 GPX 文件时遇到此错误:
gpx_file_object = open(path_and_file, 'r')
parser = gpxpy.parse(gpx_file_object)
GPX 文件如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/1" creator="EMNRD.GPXWriter"
version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1
http://www.topografix.com/GPX/1/1/gpx.xsd">
<time>01/07/2016 07:49:50</time>
<metadata>
<name>0/0</name>
<desc>24989196</desc>
</metadata>
<trk>
<name>0/0</name>
<trkseg>
<trkpt lat="35.000096" lon="-108.050042"/>
<trkpt lat="34.5277756667" lon="-108.050042"/>
<trkpt lat="34.5277756667" lon="-107.4452589"/>
<trkpt lat="35.000096" lon="-107.4452589"/>
<trkpt lat="34.000096" lon="-108.050042"/>
</trkseg>
</trk>
</gpx>
此 GPX 文件是由我使用 lxml/etree 编写的 python 代码生成的。我在编辑器中以文本和十六进制模式查看了该文件,没有发现任何异常。我将上面的内容粘贴到 xml 验证器中并通过了。我将 GPX 文件加载到 MOBAC 中,它看起来不错。
我读过这个问题,但没有找到适合我的解决方案:
有什么建议吗?
您问题中的 GPX 文件 是 well-formed,所以它不是解析器真正看到的,或者报错信息不对。
您一个人可以确认解析器真正看到的是什么。继续处理错误消息错误的(不太可能)可能性,您仍然有 validation 问题需要处理。 (In XML, valid is not the same as well-formed.)
这是您的 GPX 文件,尽管有错误消息,它已经 well-formed,也更正为 有效 :
<?xml version='1.0' encoding='UTF-8'?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/1"
creator="EMNRD.GPXWriter"
version="1.1"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 gpx.xsd">
<metadata>
<name>0/0</name>
<desc>24989196</desc>
<time>2016-01-07T00:00:00</time>
</metadata>
<trk>
<name>0/0</name>
<trkseg>
<trkpt lat="35.000096" lon="-108.050042"/>
<trkpt lat="34.5277756667" lon="-108.050042"/>
<trkpt lat="34.5277756667" lon="-107.4452589"/>
<trkpt lat="35.000096" lon="-107.4452589"/>
<trkpt lat="34.000096" lon="-108.050042"/>
</trkseg>
</trk>
</gpx>
请注意,在上述修复之前,time
放错了位置且格式不正确。
我在像这样解析 GPX 文件时遇到此错误:
gpx_file_object = open(path_and_file, 'r')
parser = gpxpy.parse(gpx_file_object)
GPX 文件如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/1" creator="EMNRD.GPXWriter"
version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1
http://www.topografix.com/GPX/1/1/gpx.xsd">
<time>01/07/2016 07:49:50</time>
<metadata>
<name>0/0</name>
<desc>24989196</desc>
</metadata>
<trk>
<name>0/0</name>
<trkseg>
<trkpt lat="35.000096" lon="-108.050042"/>
<trkpt lat="34.5277756667" lon="-108.050042"/>
<trkpt lat="34.5277756667" lon="-107.4452589"/>
<trkpt lat="35.000096" lon="-107.4452589"/>
<trkpt lat="34.000096" lon="-108.050042"/>
</trkseg>
</trk>
</gpx>
此 GPX 文件是由我使用 lxml/etree 编写的 python 代码生成的。我在编辑器中以文本和十六进制模式查看了该文件,没有发现任何异常。我将上面的内容粘贴到 xml 验证器中并通过了。我将 GPX 文件加载到 MOBAC 中,它看起来不错。
我读过这个问题,但没有找到适合我的解决方案:
有什么建议吗?
您问题中的 GPX 文件 是 well-formed,所以它不是解析器真正看到的,或者报错信息不对。
您一个人可以确认解析器真正看到的是什么。继续处理错误消息错误的(不太可能)可能性,您仍然有 validation 问题需要处理。 (In XML, valid is not the same as well-formed.)
这是您的 GPX 文件,尽管有错误消息,它已经 well-formed,也更正为 有效 :
<?xml version='1.0' encoding='UTF-8'?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/1"
creator="EMNRD.GPXWriter"
version="1.1"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 gpx.xsd">
<metadata>
<name>0/0</name>
<desc>24989196</desc>
<time>2016-01-07T00:00:00</time>
</metadata>
<trk>
<name>0/0</name>
<trkseg>
<trkpt lat="35.000096" lon="-108.050042"/>
<trkpt lat="34.5277756667" lon="-108.050042"/>
<trkpt lat="34.5277756667" lon="-107.4452589"/>
<trkpt lat="35.000096" lon="-107.4452589"/>
<trkpt lat="34.000096" lon="-108.050042"/>
</trkseg>
</trk>
</gpx>
请注意,在上述修复之前,time
放错了位置且格式不正确。