trans.setOutputProperty("indent","\t");
解决方案 »
- 诡异,令我发疯的问题,求真高手。。。
- Orcale知识
- Hibernate3.1不支持注释映射吗...
- socket连接问题
- 最近在看spring框架与strut1.x整合的时候遇到了一个小问题
- 验证axis安装出现了一个警告,不知道如何解决。大家帮帮我
- 请教各位一个<<精通ejb第二版>>中的简单问题,望大家不吝赐教,谢谢!
- EJB和struts
- 能不能給我一個JDBC for SQL server的驅動呀?免費的而且比較好用的。
- Applet与数据库与Servlet的问题,分数不够可以再加
- java.sql.SQLException: Refcursor 值无效
- webwork的 action中怎么把数据库的表中的数据写成txt文件下载到客户端???
trans.setOutputProperty("indent","no");
可是只能换行,但是没有缩进
"{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
ransformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "2");