用java格式化XML文件
我已经创建了一个xml,我不得不使用用java格式化XML文件,java,xml,dom,Java,Xml,Dom,我已经创建了一个xml,我不得不使用PrintWriter类修改它。(逐行复制xml文件并修改所需内容)但我丢失了缩进 我试过这个: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = buil
PrintWriter
类修改它。(逐行复制xml文件并修改所需内容)但我丢失了缩进我试过这个:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new InputStreamReader(new FileInputStream(
"notes.xml"))));
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.setOutputProperty(OutputKeys.METHOD, "xml");
xformer.setOutputProperty(OutputKeys.INDENT, "yes");
xformer.setOutputProperty("b;http://xml.apache.org/xsltd;indent-amount", "4");
//xformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
Source source = new DOMSource(document);
Result result = new StreamResult(new File("notes.xml"));
xformer.transform(source, result);
但这不起作用:第三行出现异常:
[Fatal Error] :3:6537: XML document structures must start and end within the same entity.
org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 6537; XML document structures must start and end within the same entity.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)
那么,有没有办法用java格式化已经创建的XML文件?
“第三行出现异常”是什么?我会把它添加到question@MadProgrammer完成!(我确信xml的状态良好)您的xml格式不好。也许你应该重新考虑使用
PrintWriter
来编写它,而不是使用文档
。您可能还想发布XML,我将创建一个XSD文件,使用XJC生成类,并以这种方式修改XML。。。更简单,更不容易出错,并且可以选择以漂亮的格式输出XML。