Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 清理KML流以更改xml命名空间_Java_Xml_Kml - Fatal编程技术网

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

Java 清理KML流以更改xml命名空间,java,xml,kml,Java,Xml,Kml,使用兼容的解析器解析Google Earth生成的KML时,会出现一些奇怪的行为。GE Kml生产系统没有将解析器预期的名称空间编写为正确的名称空间,并且当将此Kml读回另一个Java应用程序时,验证失败 我们在读取流时对其进行篡改,并用适当的名称空间替换任何其他名称空间的出现。这只需要在文件开头附近执行一次。尝试的方法是将前几行解析为字符串,执行搜索和替换,创建stringstream,并使用SequenceInputStream将FileInputStream的“其余”连接到stringst

使用兼容的解析器解析Google Earth生成的KML时,会出现一些奇怪的行为。GE Kml生产系统没有将解析器预期的名称空间编写为正确的名称空间,并且当将此Kml读回另一个Java应用程序时,验证失败

我们在读取流时对其进行篡改,并用适当的名称空间替换任何其他名称空间的出现。这只需要在文件开头附近执行一次。尝试的方法是将前几行解析为字符串,执行搜索和替换,创建stringstream,并使用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()方法将返回当前流的长度,而不是预期的所有流的组合长度


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

信息不足。举例说明您正在处理的内容和您期望的内容将非常有用。还应解释“不工作”(异常、错误消息、不正确的输出等)