解析GPX-fi时出现神秘错误消息

2024-09-28 19:18:59 发布

您现在位置:Python中文网/ 问答频道 /正文

在上一个问题中,我问了一个python3.5程序中的问题,该程序将多个gpx轨迹合并到一个klm文件中。我没有收到关于这个问题的答案,我决定把这个bug作为一个可选的特性。在

今天,我完成了程序的GUI编程,并开始使用其他(旧的)gpx文件进行测试,我从计算机上找到了这个文件。运行程序时,出现此错误消息,但不会中断程序工作。在

  ERROR:root:unbound prefix: line 14, column 0
  Traceback (most recent call last):
  File "C:\Program Files\Python35\lib\site-packages\gpxpy\parser.py", line 188, in parse
    self.xml_parser = XMLParser(self.xml)
  File "C:\Program Files\Python35\lib\site-packages\gpxpy\parser.py", line 44, in __init__
    self.dom = mod_minidom.parseString(xml)
  File "C:\Program Files\Python35\lib\xml\dom\minidom.py", line 1968, in parseString
    return expatbuilder.parseString(string)
  File "C:\Program Files\Python35\lib\xml\dom\expatbuilder.py", line 925, in parseString
    return builder.parseString(string)
  File "C:\Program Files\Python35\lib\xml\dom\expatbuilder.py", line 223, in parseString
    parser.Parse(string, True)
xml.parsers.expat.ExpatError: unbound prefix: line 19, column 0

经过反复试验,我发现这是由gpxpy.parse(gpx_file)引起的,这会引起gpxpy.parser.mod_gpx.GPXXMLSyntaxException。因为我将它作为错误异常使用,那个错误将返回函数,父循环将尝试解析列表中的下一个文件。将跳过导致异常的GPX轨迹。在

^{pr2}$

我不知道是什么导致了这个错误,也不知道输入文件中的哪一行。回溯发生在每个无法解析的文件中,但消息最后一行中的行号有时不同。可以是14、18、19或22。在

这个错误是什么意思?究竟是什么导致了这个错误?怎样才能避免呢?我应该编辑gpx轨迹、脚本还是忽略错误?在

我尝试导入的所有GPX轨迹都是由gpxpy模块本身生成的。在

编辑:这是两个gpx文件的开头。首先是原始的,然后是gpxpy生成的。在

^{3}$

修改的文件:

<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="Locus Map, Android">
<metadata>
<desc>File with points/tracks from Locus Map Pro/3.16.2</desc>
<author>
<link ></link></author>
<copyright ></copyright>
<link ></link></metadata>
<trk>
<name>2015-12-27.Lohusalus.jalutamas</name>
<desc> </desc>
<link ></link>
<extensions>
<gpx_style:line>
            </gpx_style:line></extensions>
<trkseg>

为了防止gpxpy gpx.to_xml()定义行样式,我可以做些什么?在


Tags: 文件程序parserlib错误linelinkfiles