Конфигурируемый принтер XML для Java

Мне нужно отформатировать файл xhtml, в котором есть некоторые элементы, включенные в другое пространство имен.

Я целый день искал действительно хороший механизм для красивой печати XML-файла в Java. Я проверил

  • dom4j
  • JDK (ксеркс)
  • мой собственный файл xslt
  • jtidy

Мне не хватает действительно хорошего форматера со следующими параметрами:

  1. установка ширины линии
  2. атрибуты переноса, если достигнута максимальная ширина линии
  3. альтернатива: выравнивание всех атрибутов
  4. опция для пустых элементов, чтобы включить пробел перед закрытием тега <br/> против <br />
  5. дать имена элементов, где пробел не имеет значения

После моего исследования я решил запустить свою собственную таблицу стилей xslt, но я думаю, что вы не можете сделать 2. или 3. и у меня тоже не было успеха с 4. тоже.

Конечно, ширина строки может быть принудительной, когда пробел является значительным и так далее. Но разве нет библиотеки, которая может делать то, что я хочу?

У вас есть предложения для меня?

ОБНОВЛЕНИЕ: я действительно ищу в сети хороший xml-принтер / симпатичный принтер. Ничего не найдено. Eclipse делает хорошую работу, но я не знаю, как извлечь компонент из его ядра. Там должно быть что-то вроде этого. На данный момент я пишу свои собственные:-(

Eclipse имеет много вариантов:

введите описание изображения здесь

Примерно так, как библиотека, было бы неплохо.

3 ответа

Решение

Serializer в XOM довольно настраиваемый, и вы можете написать свою собственную реализацию, если это необходимо.

Вы можете использовать нативный Java SAX для выполнения форматированной печати.

Выше пример, чтобы напечатать симпатичный XML.

    SAXReader reader = new SAXReader();
        Document doc = reader.read(new ByteArrayInputStream(XMLSTRING.getBytes()));


        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        OutputFormat outputFormat = OutputFormat.createCompactFormat();

        // Out formatted XML
        outputFormat = OutputFormat.createPrettyPrint();

        XMLWriter writer = new XMLWriter(baos, outputFormat);
        writer.write(doc);
        writer.close();

        String formatedXML = new String(baos.toByteArray());

Я всегда знал, что " Tidy" - хороший инструмент для подобных ситуаций.

Другие вопросы по тегам