Как вывести имя, тип файла и расширение файла XML в другой XML - PullRequest
1 голос
/ 08 января 2009

У меня есть класс 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>

Еще раз я ценю любую помощь, которую я получаю!

1 Ответ

1 голос
/ 08 января 2009

Я бы рекомендовал использовать утилиту сериализации, такую ​​как 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;
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...