【问题标题】:GPXXMLSyntaxException: Error parsing XML: not well-formed (invalid token): line 1, column 11GPXXMLSyntaxException:解析 XML 时出错:格式不正确(无效标记):第 1 行,第 11 列
【发布时间】:2016-04-17 09:57:06
【问题描述】:

解析 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 中,看起来不错。

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

有什么建议吗?

【问题讨论】:

    标签: python xml xsd xml-validation gpx


    【解决方案1】:

    您问题中的 GPX 文件格式正确,所以要么它不是解析器所看到的,要么错误消息有误。

    只有你才能确认解析器真正看到的是什么。继续处理错误消息错误的(不太可能)可能性,您仍然有验证问题需要处理。 (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 放错了位置并且格式不正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-02
      • 2016-08-31
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      相关资源
      最近更新 更多