2 つの XML ログ ファイルをマージする必要があります。1 つのログ ファイルには、位置の更新を含むトレースが含まれています。もう 1 つのログ ファイルには、受信したメッセージが含まれます。間に位置の更新がなくても、複数の受信メッセージが存在する可能性があります。
両方のログにタイムスタンプがあります。
- トレース ログは <date> を使用します (例: 14.7.2012 11:08:07)
- メッセージ ログは UNIX タイムスタンプ <timeStamp> (例: 1342264087) を使用します。
トレースの構造は次のようになります。
<item>
<date>14.7.2012 11:08:07.222</date>
<MyPosition>
// Position data
</MyPosition>
</item>
<item>
<date>14.7.2012 12:13:07.112</date>
<MyPosition>
// Position data
</MyPosition>
</item>
...
メッセージの構造は次のようになります。
<Message>
// some content of the message
<subTag>
<timeStamp>1342264087</timeStamp>
</subTag>
// other content of the message
</Message>
<Message>
// same as above
</Message>
...
マージを行うときは、タイムスタンプを読み取り (「日付」と「タイムスタンプ」も変換/比較)、すべての位置とメッセージを正しい順序で追加する必要があります。
位置データはそのまま追加できます。ただし、メッセージは <item> タグ内に配置し、(メッセージの UNIX 時間に基づいて) <date> タグを追加し、<Message> タグを <m:Message type="received" に置き換える必要があります。 >タグ。
残念ながら、特にログ ファイルのサイズが 5 MB から 700 MB の間であるため、「単純な」マージではありません... :-/
結果は次のようになります。
<item>
<date>14.7.2012 11:08:07.222</date>
<MyPosition>
// Position data
</MyPosition>
</item>
<item>
<date>14.7.2012 11:09:10.867</date>
<m:Message type="received">
// content of the <Message>
</m:Message>
</item>
<item>
<date>14.7.2012 12:10:11.447</date>
<m:Message type="received">
// content of the former <Message>
</m:Message>
</item>
<item>
<date>14.7.2012 12:13:07.112</date>
<MyPosition>
// Position data
</MyPosition>
</item>
<item>
<date>14.7.2012 12:17:11.227</date>
<m:Message type="received">
// content of the former <Message>
</m:Message>
</item>
...
そのようなマージをサポートするツールはありますか? または、Javaを使用してこれを解決する簡単な方法はありますか?
この問題を解決する方法についてのヒントを本当に感謝します。