...
</trk>
</gpx>
<trkpt lat="53.502100503614564" lon="10.065932731189879">
<ele>0.0</ele>
<time>2017-10-15T11:42:39.916+0000</time>
<speed>0.3</speed>
</trkpt>
这是我要解析的GPX文件的结尾。不幸的是,使用gpxpy
和lxml
我无法解析文件并获得错误消息。所有使用的解析器都无法处理最后用</gpx>
结束后的额外内容。似乎他们只能完全解析它,而不能部分解析它。是真的吗?在
我试图通过使用open(gpxfile,'r+').read().find("</gpx>")
函数来解决这个问题,以便在使用f.seek(positionOfEnd)
之后找到文件的结尾并用f.write('')
覆盖任何其他内容。在
不幸的是,使用truncate来截断文件的其余部分在r+
写入模式下不起作用。在
我还试图使用etree.iterparse
逐行解析文件,但也没有成功。在
这里是我使用的代码:
^{pr2}$使用gpxpy
我得到:
raise mod_gpx.GPXXMLSyntaxException('Error parsing XML: %s' % str(e), e)
gpxpy.gpx.GPXXMLSyntaxException: Error parsing XML: Extra content at the end of the document, line 16, column 3 (line 16)
使用lxml
我得到:
File "src\lxml\iterparse.pxi", line 208, in lxml.etree.iterparse.__next__ (src\lxml\etree.c:155949)
File "file:/C:/Users/user.name/Desktop/test/Mission%202.gpx", line 16
lxml.etree.XMLSyntaxError: Extra content at the end of the document, line 16, column 3
我尝试的是:
f = open(path+"\\"+file,'r+')
pos = f.read().find("</gpx>")
f.seek(pos+1)
f.write('testEdit')
f.close
但并没有像预期的那样,把testex放在文件中间的某个地方,但不是放在文件中间的某个地方。在
我怎样才能轻松处理这些问题?我还能试试什么?我用的是Win7和python2.7
恐怕我的方法不是处理gpx/xml/html数据的好方法,但是您可以尝试一下
您也可以尝试
^{pr2}$BeautifulSoup
(可能是更好的方法),它可以在<gpx>
之外处理<trkpt>
标记。在相关问题 更多 >
编程相关推荐