Пользовательское форматирование 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 не знает, что текст или не имеет смысла, и не знает, какие соглашения о отступах вы используете.

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