gpt4 book ai didi

java - 清理 KML 流以更改 xml 命名空间

转载 作者:行者123 更新时间:2023-12-01 16:10:13 27 4
gpt4 key购买 nike

使用兼容的解析器 JAK 解析 Google Earth 生成的 KML 时出现一些奇怪的行为。 GE Kml 生产系统未将解析器预期的 namespace 写入正确的 namespace ,并且将此 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>

序列流返回错误的可用值(仅适用于序列中的第一个流),导致解析器失败。

最佳答案

SequenceInputStream 以一种不同寻常的方式工作。它将两个流连接成一个虚拟流。 SequenceInputStream 的 available() 方法将返回当前流的长度,而不是按预期组合的所有流的长度。

您应该使用 StringBuffer 代替 SequenceInputStream 来读入文件并在读入数据时进行所需的任何更改。StringBuffer 提高了添加字符串对象的性能。如果最后需要流输出,请将 StringBuffer.toString() 方法解析为 StringStream。

关于java - 清理 KML 流以更改 xml 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1535869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com