• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Трансформация Xml

  • Автор темы Автор темы beg2013
  • Дата начала Дата начала
B

beg2013

Доброго времени суток !
Уважаемые гуру, помогите побороть проблемку:
Есть код
Код:
	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
Document doc = documentBuilder.parse(new ByteArrayInputStream("<top><d1>test</d1><d2></d2><d3/></top>".getBytes()));

DOMSource source = new DOMSource(doc);
ByteArrayOutputStream outStream=new ByteArrayOutputStream();
StreamResult result = new StreamResult(outStream);

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
transformer.transform(source, result);

System.out.println(outStream);

На выходе получаю результат:
<?xml version="1.0" encoding="UTF-8"?><top><d1>test</d1><d2/><d3/></top>

Как я понимаю, проблема в транформации transformer.transform.
Как заставить не преобразовывать <d2></d2> в <d2/> ?
Нужно на выходе получить тот же xml, что и исходный, то есть <d2></d2><d3/>.
Спасибо.
 
Возможно вывод в консоль нужно сделать так:
C++:
			PrintStream ps;

try{
ps = new PrintStream(System.out, true, "UTF-16");
}catch(UnsupportedEncodingException e){
e.printStackTrace();
return;
}

byte b[] = outStream.toByteArray();
for(byte value : b) ps.write((char) value);
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab