GPXXMLSyntaxException:解析XML时出错:格式不正确(无效令牌):第1行第11列

时间:2016-01-12 16:58:19

标签: python xml xsd xml-validation gpx

解析像这样的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,看起来不错。

我已经阅读了这个问题,但没有为我找到解决方案:

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

问题中的GPX文件格式正确,因此它不是解析器所看到的错误或错误消息错误。< / p>

只有你才能确认解析器真正看到了什么。继续(不太可能)错误消息错误的可能性,您仍然有验证问题来处理地址。 (In XML, valid is not the same as well-formed.

以下是您的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 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放错地方并且形式不正确。