準拠したパーサーJAKを使用して Google Earth によって生成された KML を解析すると、奇妙な動作が発生します。パーサーによって予期される名前空間は、GE Kml プロダクション システムによって正しい名前空間として書き込まれず、この KML を別の Java アプリケーションに読み戻すときに検証に失敗します。
ストリームが読み取られるときにストリームをいじり、他の名前空間の発生を適切な名前空間に置き換えます。これは、ファイルの先頭付近で 1 回だけ実行する必要があります。試行されたアプローチは、最初の数行を文字列に解析し、検索と置換を実行し、文字列ストリームを作成し、SequenceInputStream を使用して FileInputStream の「残り」を StringStream に連結することでした。ただし、これは機能しません。どんなアイデアでも大歓迎です。
KML xmlns フラグメントの先頭は次のとおりです。
<code>
<kml xmlns="http://earth.google.com/kml/2.2">
</code>
置き換えたいものは次のとおりです。
<code>
<kml xmlns="http://www.opengis.net/kml/2.2">
</code>
シーケンス ストリームが誤った使用可能な値を返す (シーケンスの最初のストリームのみ) ため、パーサーが失敗します。