java DOM xml文件创建 - 输出文件中没有制表符或空格
java DOM xml文件创建 - 输出文件中没有制表符或空格
我已经浏览了stackoverflow上的帖子,但似乎没有什么帮助。
以下是我目前拥有的代码:
// 将内容写入xml文件 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);
这是我得到的输出结果:
没有制表符也没有空格。
我设置了indent-number是因为可能是Java的一个bug,我还激活了OutputKeys.INDENT。
还有其他的想法吗?
编辑1(在adarshr修复之后):
现在有了空格。只有第一个Satellite条目被放在第一行,这不应该是这样的。
blah
编辑2:
所以当前的状态是,我现在有了空格,但在XML声明之后没有换行符。我该如何解决这个问题?
问题原因:问题出现的原因是TransformerFactory或Transformer类的实现与Java的预期不同。
解决方法:需要设置一个系统属性来解决该问题。设置方法如下:
System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");
然后,需要在classpath中添加Apache Xalan JAR文件。
可能存在的问题:在更改后出现了一个异常,异常信息为:javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.xsltc.trax.TransformerFactoryImpl not found。这说明需要在classpath中添加Apache Xalan JAR文件。
可能的解决方法:确认是否已将Apache Xalan JAR文件添加到classpath中。如果已添加但仍出现异常,可能需要查看文件路径是否正确。
问题的根本原因是TransformerFactory或Transformer类的实现与Java的预期不同。通过设置系统属性并添加Apache Xalan JAR文件到classpath中,可以解决该问题。
问题出现的原因是没有在输出文件中添加制表符或空格。解决方法是使用Transformer类的OutputProperties属性,设置indent属性为"yes",表示输出文件时添加缩进。下面是一个解决该问题的示例代码:
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import javax.xml.transform.TransformerFactory; import javax.xml.transform.Transformer; import javax.xml.transform.OutputKeys; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; public class CreateXML { public static void main(String[] args) { try { // 创建DOM文档对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument(); // 创建根元素 Element rootElement = document.createElement("root"); document.appendChild(rootElement); // 创建子元素 Element childElement = document.createElement("child"); rootElement.appendChild(childElement); // 创建Transformer对象 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); // 设置输出属性 transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // 将DOM对象转换为XML文件 DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(System.out); // 输出到控制台 transformer.transform(source, result); } catch (Exception e) { e.printStackTrace(); } } }
使用以上代码,输出的XML文件将包含缩进,使其更易读。