我正在尝试使用 Java 创建一个 XML 文件,它是 GPS 坐标 (GPX) 的集合。每次我从我的 android 设备收到坐标(大约每秒 1 个)时,我都需要将结果附加到现有的 XML 文件中。我正在寻找的输出如下所示,其中 trkpt 元素作为重复项。问题是我不能只将新的 trkpt 添加到文件的末尾,因为它需要在 trkseg 父元素内。
到目前为止,我已经尝试了两种不同的 API,SIMPLEXML 和 JDOM。使用 SIMPLEXML,我无法弄清楚如何将子元素附加到现有文件中,因此我切换到了 JDOM。JDOM 允许我附加 trkpt 元素,如下所示,但是随着文件开始增长,它很快就减慢了程序的用户界面。使用 JDOM,我使用 SAXBuilder 重新打开文件并追加。我认为这个问题是它必须在添加新元素并重写文件之前在内存中复制整个文件。因此,文件越大,设备上的操作要求就越高。我需要一个在写入新数据之前不检查/复制整个文件的解决方案。有没有更有效的方法可以使用 Java 或 Java 的 API 来完成此任务?谢谢你的帮助!
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1">
<trk>
<trkseg>
<trkpt lon="9.860624216140083" lat="54.9328621088893">
<ele>228.0</ele>
</trkpt>
<trkpt lon="9.860624216140100" lat="54.9328621088754">
<ele>234.0</ele>
</trkpt>
<trkpt lon="9.860624216140343" lat="54.9328621088678">
<ele>227.0</ele>
</trkpt>
</trkseg>
</trk>
</gpx>