java DOM xml文件创建-输出文件中没有制表符或空格
我已经查看了stackoverflow上的帖子,但似乎没有任何帮助 以下是我们所拥有的:java DOM xml文件创建-输出文件中没有制表符或空格,java,xml,dom,indentation,Java,Xml,Dom,Indentation,我已经查看了stackoverflow上的帖子,但似乎没有任何帮助 以下是我们所拥有的: // write the content into xml file TransformerFactory transformerFactory = TransformerFactory.newInstance(); transformerFactory.setAttribute("indent-number", 2); Transfo
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setAttribute("indent-number", 2);
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(xmlDoc);
StreamResult result = new StreamResult(new File("C:\\testing.xml"));
transformer.transform(source, result);
这就是我得到的输出:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Satellite SatelliteName="" XmlFileVersion="">
<test0>
<test1>
<test2>
<test3>
<test4>
<test5>
<test6>
<test7>
<test8>
<test9/>
</test8>
</test7>
</test6>
</test5>
</test4>
</test3>
</test2>
</test1>
</test0>
</Satellite>
没有选项卡或空格
由于java可能存在错误,我设置了缩进编号,并激活了OutputKeys.indent
还有其他想法吗
编辑1(在adarshr修复后):
我现在有了空白。只有第一个卫星入口被放置在第一行,这不应该是
<?xml version="1.0" encoding="UTF-8"?><Satellite SatelliteName="" XmlFileVersion="">
<test0>
<test1>
<test2>
<test3>
<test4>
<test5>
<test6>
<test7>
<test8>
<test9>blah</test9>
</test8>
</test7>
</test6>
</test5>
</test4>
</test3>
</test2>
</test1>
</test0>
<sdjklhewlkr/>
</Satellite>
废话
编辑2:
因此,当前的状态是,我现在有空格,但在XML声明之后没有换行符。我怎样才能解决这个问题?我以前也遇到过同样的问题。问题在于所加载的TransformerFactory或Transformer类的实现与Java的预期不同 为了解决这个问题,我们还必须设置一个系统属性。我马上给你拿 编辑:试试这个
System.setProperty(“javax.xml.transform.TransformerFactory”、“org.apache.xalan.xsltc.trax.TransformerFactoryImpl”)代码>尝试如下设置缩进量:
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
我可以给你两个建议
1st
您可以使用xsl文件进行漂亮的输出
第二名
我发现了有趣的库ode-utils-XXX.jar
你可以这样写
String result = "";
try {
result = DOMUtils.prettyPrint(doc);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(result);
我玩过Transformer,但从来没用过。我使用了Xerces(Apache)库,它对我来说一直很有吸引力。试试像这样的东西
OutputFormat format = new OutputFormat(document);
format.setLineWidth(65);
format.setIndenting(true);
format.setIndent(2);
Writer outxml = new FileWriter(new File("out.xml"));
XMLSerializer serializer = new XMLSerializer(outxml, format);
serializer.serialize(document);
在这次更改之后,我得到了以下异常:线程“AWT-EventQueue-0”javax.xml.transform.TransformerFactoryConfigurationError:Provider org.apache.xalan.xsltc.trax.TransformerFactoryImpl未找到显然,您需要在类路径中包含apache xalan JAR文件!嗯,没有现成的解决方案吗?好的,我试过了,除了一件小事,它还能用。请看上面。这很好,听了也有点麻烦。我会看看是否能为您找到解决方案。我得到的输出与以前相同。@fpdragon-您是否包括外部xalan impl?我建议使用jdk内置实现进行尝试。我在没有xalan的情况下尝试过,但它抛出了一个异常。在这之后,我注意到apache url在命令中,所以我希望这个命令只适用于xalan?!我认为您遇到了第一行问题,在我所做的任何解析/格式化中,xml编码标记似乎都没有被视为真正的节点,所以它看起来和您的一样。