Создание XML из с Java - PullRequest
       26

Создание XML из с Java

1 голос
/ 19 декабря 2008

Мне снова нужен ваш опыт. У меня есть класс Java, который ищет в каталоге файлы XML (отображает файлы, которые он находит в окне консоли eclipse), применяет к ним указанный xslt и отправляет вывод в каталог.

Теперь я хочу создать xml, содержащий имена файлов и типы форматов файлов. Формат должен быть примерно таким:

<file>
      <fileName>         </fileName>
      <fileType>       </fileType>
</file>

<file>
     <fileName>         </fileName>
     <fileType>       </fileType>
</file>

Где для каждого файла, который он находит в каталоге, он создает новый <file>.

Любая помощь действительно ценится.

Ответы [ 4 ]

10 голосов
/ 19 декабря 2008

Использовать библиотеку XML. Их много, и сторонние почти все проще в использовании, чем встроенный DOM API в Java. В прошлый раз, когда я использовал его, JDom был довольно хорош. (У меня не было много работы с XML в последнее время.)

Что-то вроде:

Element rootElement = new Element("root"); // You didn't show what this should be
Document document = new Document(rootElement);

for (Whatever file : files)
{
    Element fileElement = new Element("file");
    fileElement.addContent(new Element("fileName").addContent(file.getName());
    fileElement.addContent(new Element("fileType").addContent(file.getType());
}

String xml = XMLOutputter.outputString(document);
3 голосов
/ 19 декабря 2008

Посмотрите на DOM и ECS. Следующий пример был адаптирован к вашим требованиям от здесь :

XMLDocument document = new XMLDocument();
for (File f : files) {
    document.addElement( new XML("file")
        .addXMLAttribute("fileName", file.getName())
        .addXMLAttribute("fileType", file.getType())
      )
    );
}
1 голос
/ 19 декабря 2008

Вы можете использовать подход StringBuilder, предложенный Vinze, но одно предостережение заключается в том, что вам нужно убедиться, что ваши имена файлов не содержат специальных символов XML, и избегать их, если они есть (например, заменить <на & lt; и работать с цитирует соответственно). </p>

В этом случае это, вероятно, не возникает, и вы обойдетесь без него, однако, если вы когда-нибудь перенесете этот код для повторного использования в другом случае, вы можете быть укушены этим. Так что вы можете захотеть взглянуть на класс XMLWriter, который сделает всю экранирующую работу за вас.

0 голосов
/ 19 декабря 2008

Ну, просто используйте StringBuilder:

StringBuilder builder = new StringBuilder();
for(File f : files) {
    builder.append("<file>\n\t<fileName>").append(f.getName).append("</fileName>\n)";
    [...]
}
System.out.println(builder.toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...