Подтвердить что ты не робот

XML-документ для строки

Какой самый простой способ получить строковое представление XML-документа (org.w3c.dom.Document)? То есть все узлы будут на одной строке.

В качестве примера, из

<root>
  <a>trge</a>
  <b>156</b>
</root>

(это только древовидное представление, в моем коде это объект org.w3c.dom.Document, поэтому я не могу рассматривать его как строку)

к

"<root> <a>trge</a> <b>156</b> </root>"

Спасибо!

4b9b3361

Ответ 1

Предполагая, что doc является вашим экземпляром org.w3c.dom.Document:

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString().replaceAll("\n|\r", "");

Ответ 3

Сначала вам нужно избавиться от всех символов новой строки во всех текстовых узлах. Затем вы можете использовать преобразование идентичности для вывода своего дерева DOM. Посмотрите на javadoc для TransformerFactory#newTransformer().