Конфигурируемый принтер XML для Java
Мне нужно отформатировать файл xhtml, в котором есть некоторые элементы, включенные в другое пространство имен.
Я целый день искал действительно хороший механизм для красивой печати XML-файла в Java. Я проверил
- dom4j
- JDK (ксеркс)
- мой собственный файл xslt
- jtidy
Мне не хватает действительно хорошего форматера со следующими параметрами:
- установка ширины линии
- атрибуты переноса, если достигнута максимальная ширина линии
- альтернатива: выравнивание всех атрибутов
- опция для пустых элементов, чтобы включить пробел перед закрытием тега
<br/>
против<br />
- дать имена элементов, где пробел не имеет значения
После моего исследования я решил запустить свою собственную таблицу стилей 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" - хороший инструмент для подобных ситуаций.