java - 如何使用 Java 将换行符添加到 XML 文件中?

标签 java xml newline

如何在“请勿编辑此文件”注释后添加换行符?我尝试添加带换行符的文本节点,但它不起作用。

代码:

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/>

最佳答案

当我运行你的代码时,我也有一个空行。您是在编辑器中查看文件,还是解析并显示文件? 我问是因为如果是这种情况,xml:space="preserve"设置在您的解析器代码中可能会出现问题。

另一种选择是将注释放在 XML 根元素本身中:

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

在几个方面,这更具互操作性。例如,假设您使用 xinclude 将 then 嵌入到文件的最终版本中。您在问题中的方式不包括不编辑文件的通知。如果将它放在根元素中,它会(并且您可能应该将其更改为说明不编辑此项目元素的内容,而不是出于同样的原因说明文件)。

关于java - 如何使用 Java 将换行符添加到 XML 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11810040/

相关文章:

java - 在java中将一个列表转换为另一个列表

java - 将 AjaxEventBehavior 添加到表单的按钮可防止表单使用 Wicket 6.1 和 6.2 提交

java - 制作模态 JInternalFrame

xml - 高效存储和访问大型 XML 文件

xml - 接口(interface) EJB - 使用 JAXB 接口(interface)的 XML

Java语句: Obfuscated code - `?:`

java - 使用 DOM 解析器解析 XML 字符串返回 null

java - 强制换行符再次正确打印

git - 线尾: Git merge creates duplicates without conflict

java - 向 JScrollPane 添加新行