Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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 使用JAK kml库编组时如何保持字符串格式_Java_Kml_Jak - Fatal编程技术网

Java 使用JAK kml库编组时如何保持字符串格式

Java 使用JAK kml库编组时如何保持字符串格式,java,kml,jak,Java,Kml,Jak,我想向我的位置标记添加一个描述,它是一系列html。当我运行marshaller时,我得到一堆特殊的字符串,而不是特殊的字符。i、 e.我的最终文件看起来像CDATAhtml而不是CDATA 我不想覆盖JAK marshaller,所以我希望有一种简单的方法来确保我的确切字符串被带到文件中 谢谢。封送处理实际上会转义特殊字符,“到”,到&和 通解 创建一个实现CharacterEscapeHandler的NoEscapeHandler(例如,查看com.sun.xml.bind.marsh

我想向我的位置标记添加一个描述,它是一系列html。当我运行marshaller时,我得到一堆特殊的字符串,而不是特殊的字符。i、 e.我的最终文件看起来像
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);