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

时间:2012-08-04 16:06:49

标签: java xml newline

如何在“不编辑此文件”注释后添加换行符?我尝试使用换行符添加textnode,但它不起作用。

代码:

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

3 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

评论后没有newLine,因为即使您激活了缩进,评论和以下节点的深度为0。

答案 2 :(得分:0)

您可以使用\ n或

在XML文件中添加换行符
<string name="yourString">new line starts now \n this is a new line</string>

此外,您应该重新考虑文本的格式,使其不使用尖括号。