使用兼容的解析器JAK解析 Google Earth 生成的 KML 时会出现一些奇怪的行为。GE Kml 生产系统未将解析器预期的命名空间写入正确的命名空间,并且当将此 KML 读回另一个 Java 应用程序时,验证失败。
我们在读取流时摆弄它,并用适当的名称空间替换任何其他名称空间的出现。这只需要在文件开头附近执行一次。尝试的方法是将前几行解析为字符串,执行搜索和替换,创建字符串流并使用 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>
序列流返回错误的可用值(仅适用于序列中的第一个流),导致解析器失败。