trans.setOutputProperty("indent","\t");

解决方案 »

  1.   

    trans.setOutputProperty("indent","yes");
    trans.setOutputProperty("indent","no");
      

  2.   

    我已经试了trans.setOutputProperty("indent","yes");
    可是只能换行,但是没有缩进
      

  3.   

    以下内容转贴:由于JAXP只是一个Java一个处理XML的框架,根据实现的不一样,可以传入实现特定的某个Key来设置缩进量。比如在Java 1.4下面,可以通过下面语句将缩进量设为2:    ransformer.setOutputProperty(
                        "{http://xml.apache.org/xslt}indent-amount", "2");
        或
        transformer.setOutputProperty(
                        "{http://xml.apache.org/xalan}indent-amount", "2");上面两句不同之处仅在于命名空间。
     
    而在Java 1.5下面,情况就有些复杂了。Java 1.5集成了JXAP 1.3(Java 1.4集成的是JXAP 1.1,不同之处参见http://java.sun.com/j2se/1.5.0/docs/guide/xml/jaxp/JAXP-Compatibility_150.html),实现基于Xerces类库。由于内部实现上的Bug,导致了设置缩进的不同:    TransformerFactory tf = TransformerFactory.newInstance();
        tf.setAttribute("indent-number", new Integer(2));
        Transformer transformer = tf.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.transform(new DOMSource(document), new StreamResult(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile)))));注意红色代码的不同之处。第一句设置TransformerFactory的indent-number属性,在Java 1.4下面运行会抛出异常,因为其不支持该属性,而在Java 1.5中却只能通过该属性来设置缩进。后面标为红色的代码则是由于Sun实现上的Bug,只有通过StreamResult(Writer)构造函数生成才能正确设置缩进(通过OutputStream或者File生成的StreamResult是无法设置缩进的,其实现上会忽略任何非正式的属性,而仅仅采用rt.jar下面com\sun\org\apache\xml\internal\ serializer\output_xml.properties中的配置。详细可以在com.sun.org.apache.xml.internal.serializer.ToStream类的setOutputStream方法中加断点进行分析)
     
    如果忽略掉可移植性,确认绑定在Sun的JRE实现上面,则可以通过如下代码来更好的实现:    OutputFormat format = new OutputFormat(document);
        format.setIndenting(true);
        format.setIndent(2);
        Writer output = new BufferedWriter( new FileWriter(outputFile) );
        XMLSerializer serializer = new XMLSerializer(output, format);
        serializer.serialize(document);但是OutputFormat类和XMLSerializer类都是位于com.sun.org.apache.xml.internal.serialize包下。
    详细全文在:http://spaces.msn.com/crmky/blog/cns!8C989768DB1A6B14!392.entry?_c11_blogpart_blogpart=blogview&_c=blogpart#permalink
      

  4.   

    多谢楼上的各位
    ransformer.setOutputProperty(
                        "{http://xml.apache.org/xslt}indent-amount", "2");