Я пытаюсь сделать отступ XML, созданный Transformer. Все DOM Node являются отступом, как ожидалось, за исключением первого Node - элемента документа. элемент документа не запускается в новой строке, а просто согласуется сразу после объявления XML.
Эта ошибка возникает, когда я перешел на java 1.7, при использовании java 1.6 или 1.5 этого не происходит.
Мой код:
ByteArrayOutputStream s = new OutputStreamWriter(out, "utf-8");
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4");
transformer.transform(new DOMSource(doc), new StreamResult(s));
Выход:
<?xml version="1.0" encoding="UTF-8"?><a>
<b>bbbbb</b>
</a>
Кто-нибудь знает, почему?
Кстати, когда я добавляю свойство
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
Работает так, как ожидалось, но объявление xml изменяется, теперь у него есть автономное свойство, и я не хочу изменять объявление xml.