GPS座標(GPX)のコレクションであるJavaを使用してXMLファイルを作成しようとしています。私がアンドロイドデバイスから座標を受け取るたびに(毎秒約1回)、結果を既存のXMLファイルに追加する必要があります。私が探している出力は、trkpt要素を繰り返し項目として以下に示しています。問題は、新しいtrkptをtrksegの親要素の内側に配置する必要があるため、ファイルの最後に新しいtrkptを追加するだけでは問題がないことです。Javaを使用して大きなXMLファイルに子要素を追加する方法は?
これまでのところ、私は2つの異なる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>
常に同じ方法でデータを追加していますか?次に、ファイルを行単位で読み込み、行をXMLにとらわれない方法で追加することを検討してください。結果が有効なXMLである限り –
代わりにプレーンファイルにデータを追加して、ファイル全体をXMLに後で変換することはできますか?それともバッチで変換するのでしょうか? XMLを継続的に更新しようとすると、人生を不必要に難しくするように思えます! ;-) – DNA
私はあなたの質問は、クライアント側の処理(アンドロイド)ではなく、サーバー側の処理、正しいと思いますか? – home