Пользовательское форматирование XML с Java DOM
Этот вопрос касается симпатичной печати с использованием Java и XML. Сами данные хранятся в XML, но я использую Java для манипулирования данными. У меня есть следующий код
<ParentElement>
<ChildElement><HeaderNum>34</HeaderNum><LineNum>21</LineNum></ChildElement>
<ChildElement><HeaderNum>42</HeaderNum><LineNum>54</LineNum></ChildElement>
</ParentElement>
Я хочу вставить еще один ChildElement между двумя существующими строками ChildElement. У меня нет проблем на самом деле, но мне нужно сохранить это форматирование. Если я использую
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
Это полностью переформатирует файл. Если я установлю это свойство на "нет", оно вставит новое, но не в свою собственную строку. Он идет по той же линии, что и первый.
Лично я бы сделал оба эти значения атрибутами, но я не могу изменить форматирование файла. Есть ли способ вставить новую на отдельной строке, но без какого-либо другого форматирования?
1 ответ
Если вы не хотите / не можете доверять отступу сериализатора - а иногда нет, потому что пробельные символы на самом деле являются частью содержимого документа XML - тогда вам придется самостоятельно управлять пробельными символами, вставив соответствующий текстовый узел перед новым элементом.
DOM не имеет ничего встроенного, чтобы помочь вам в этом, поскольку DOM не знает, что текст или не имеет смысла, и не знает, какие соглашения о отступах вы используете.