Java 使用JAK kml库编组时如何保持字符串格式
我想向我的位置标记添加一个描述,它是一系列html。当我运行marshaller时,我得到一堆特殊的字符串,而不是特殊的字符。i、 e.我的最终文件看起来像Java 使用JAK kml库编组时如何保持字符串格式,java,kml,jak,Java,Kml,Jak,我想向我的位置标记添加一个描述,它是一系列html。当我运行marshaller时,我得到一堆特殊的字符串,而不是特殊的字符。i、 e.我的最终文件看起来像CDATAhtml而不是CDATA 我不想覆盖JAK marshaller,所以我希望有一种简单的方法来确保我的确切字符串被带到文件中 谢谢。封送处理实际上会转义特殊字符,“到”,到&和 通解 创建一个实现CharacterEscapeHandler的NoEscapeHandler(例如,查看com.sun.xml.bind.marsh
CDATAhtml
而不是CDATA
我不想覆盖JAK marshaller,所以我希望有一种简单的方法来确保我的确切字符串被带到文件中
谢谢。封送处理实际上会转义特殊字符,
“
到”
,到&代码>和
通解
创建一个实现CharacterEscapeHandler的NoEscapeHandler(例如,查看com.sun.xml.bind.marshaller.DumbEscapeHandler
import java.io.IOException;
import java.io.Writer;
import com.sun.xml.bind.marshaller.CharacterEscapeHandler;
public class NoEscapeHandler implements CharacterEscapeHandler {
private NoEscapeHandler() {}
public static final CharacterEscapeHandler theInstance = new NoEscapeHandler();
public void escape(char[] ch, int start, int length, boolean isAttVal, Writer out) throws IOException {
int limit = start+length;
for (int i = start; i < limit; i++) {
out.write(ch[i]);
}
}
}
或者使用数据编写器
StringWriter sw = new StringWriter();
DataWriter dw = new DataWriter(sw, "utf-8", NoEscapeHandler.theInstance);
使用XmlStreamWriter和jaxb框架时的解决方案
最终XMLOutputFactory streamWriterFactory=XMLOutputFactory.newFactory();
streamWriterFactory.setProperty(“escapeCharacters”,false)
谢谢您,对于KmlFactory,createKml,您可以使用类似于以下内容的内容//返回kml.marshal(System.out)StringWriter sw=new StringWriter()kml.marshal(sw)返回sw.toString()
marshaller.setProperty("com.sun.xml.bind.characterEscapeHandler", NoEscapeHandler.theInstance);
StringWriter sw = new StringWriter();
DataWriter dw = new DataWriter(sw, "utf-8", NoEscapeHandler.theInstance);