问题
我有一个 java 类,它将 xslt 应用于目录中的所有 xml 文件,并对它找到的每个 xml 执行转换并打印出完整的文件名。
我的问题是如何创建一个具有以下格式的 xml (Files.xml),然后将文件名、文件类型和文件扩展名输出到 Files.xml?
<files>
<file>
<name> ThisFile </name>
<type> xml </type>
<extension> .xml </extension>
</file>
<file>
<name> AnotherFile </name>
<type> xml </type>
<extension> .xml </extension>
</file>
etc....
</files>
解决方案
我建议使用像JAXB或XStream这样的序列化实用程序来直接序列化文件模型,但我在这里留给你一个从头开始构建文档的小示例。
public void serializeXmlFiles(ArrayList<File> files) throws ParserConfigurationException, TransformerException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
Element filesElement = doc.createElement("files");
doc.appendChild(filesElement);
for (File file : files) {
Element fileElement = doc.createElement("file");
Element nameElement = doc.createElement("name");
nameElement.setTextContent(file.getName());
Element typeElement = doc.createElement("type");
typeElement.setTextContent("xml");
Element extElement = doc.createElement("extension");
extElement.setTextContent(".xml");
fileElement.appendChild(nameElement);
fileElement.appendChild(typeElement);
fileElement.appendChild(extElement);
filesElement.appendChild(fileElement);
}
saveXMLDocument("files.xml", doc);
}
public boolean saveXMLDocument(String fileName, Document doc) throws TransformerException {
File xmlOutputFile = new File(fileName);
FileOutputStream fos;
Transformer transformer;
try {
fos = new FileOutputStream(xmlOutputFile);
} catch (FileNotFoundException e) {
return false;
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(fos);
transformer.transform(source, result);
return true;
}