如何用Java将行换行添加到XML文件中?

问题描述:

如何在“不要编辑此文件”注释后添加换行符?我试图用换行符添加textnode,但它不起作用。如何用Java将行换行添加到XML文件中?

代码:

import java.io.File; 

import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.transform.OutputKeys; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 

public class Main { 
    public static void main(String[] args) { 
     try { 
      final Document doc = DocumentBuilderFactory.newInstance(). 
        newDocumentBuilder().newDocument(); 

      doc.appendChild(doc.createComment(" DO NOT EDIT THIS FILE ")); 

      final Element rootElement = doc.createElement("projects"); 
      doc.appendChild(rootElement); 

      final Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
      transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
      transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); 
      transformer.transform(new DOMSource(doc), new StreamResult(new File("C:/abc.xml"))); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

输出:

<!-- DO NOT EDIT THIS FILE --><projects/> 

+1

嗯...有我的机器上的换行符... – 2012-08-04 16:12:25

+0

我我正在使用Java 7,那你呢? – perak 2012-08-04 16:15:41

+0

同样...奇怪。 – 2012-08-04 16:16:34

我有一个空行,以及当我跑你的代码。您是在编辑器中查看文件,还是解析并显示它? 我问,因为xml:space =“preserve”的设置可能在你的解析器代码中不可靠,如果是这样的话。

另一种选择是将XML根元素本身的评论:

 final Element rootElement = doc.createElement("projects"); 
     doc.appendChild(rootElement); 
     rootElement.appendChild(doc.createComment(" DO NOT EDIT THIS FILE ")); 

在几个方面,这是更好的互操作性。例如,假设您使用xinclude嵌入到文件的最终版本中。您在问题中的方式不包括通知不编辑文件。如果你把它放在根元素里面(你可能会改变它来说一些关于不编辑这个项目元素的内容,而不是说出于同样原因的文件)。

没有换行的评论后,因为即使你激活缩进,注释及以下节点具有深度0