在Java中,可以使用DOM(Document Object Model)来操作XML文件。以下是一个示例代码,演示如何使用DOM来生成XML文件,而不使用Transformer。
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
public class XMLGenerator {
public static void main(String[] args) {
try {
// 创建DOM文档
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
// 创建根元素
Element rootElement = doc.createElement("employees");
doc.appendChild(rootElement);
// 创建子元素
Element employee = doc.createElement("employee");
rootElement.appendChild(employee);
// 创建子元素的属性
employee.setAttribute("id", "1");
// 创建子元素的子元素
Element firstName = doc.createElement("firstName");
Text firstNameText = doc.createTextNode("John");
firstName.appendChild(firstNameText);
employee.appendChild(firstName);
Element lastName = doc.createElement("lastName");
Text lastNameText = doc.createTextNode("Doe");
lastName.appendChild(lastNameText);
employee.appendChild(lastName);
// 创建Transformer来保存DOM文档为XML文件
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
StreamResult streamResult = new StreamResult(new File("output.xml"));
// 将DOM文档保存为XML文件
transformer.transform(domSource, streamResult);
System.out.println("XML文件已生成。");
} catch (ParserConfigurationException | TransformerException e) {
e.printStackTrace();
}
}
}
上述代码创建了一个XML文件,包含一个根元素 "employees",其中包含一个子元素 "employee",并在 "employee" 元素中添加了一些属性和子元素。最后,使用Transformer将DOM文档保存为名为 "output.xml" 的XML文件。
请注意,此解决方案使用Java的DOM API来生成XML文件,而不使用Transformer。