使用以下简单代码:
package test;
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class TestOutputKeys {
public static void main(String[] args) throws TransformerException {
// Instantiate transformer input
Source xmlInput = new StreamSource(new StringReader(
"<!-- Document comment --><aaa><bbb/><ccc/></aaa>"));
StreamResult xmlOutput = new StreamResult(new StringWriter());
// Configure transformer
Transformer transformer = TransformerFactory.newInstance()
.newTransformer(); // An identity transformer
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "testing.dtd");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(xmlInput, xmlOutput);
System.out.println(xmlOutput.getWriter().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
我得到输出:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Document comment --><!DOCTYPE aaa SYSTEM "testing.dtd">
<aaa>
<bbb/>
<ccc/>
</aaa>
Run Code Online (Sandbox Code Playgroud)
问题A:doctype标签出现在文档注释之后.是否有可能在文件评论之前出现?
问题B:如何仅使用JavaSE 5.0 …
我正在使用org.w3c XML API打开现有XML文件.我正在删除一些节点,而我正在添加其他节点.
问题是添加的新节点是一个接一个地写入的,没有换行符,也没有缩进.虽然XML文件确实有效,但人们很难检查它.
无论如何都要添加缩进,或者至少在每个节点后添加换行符?