10

I'm having a small issue of converting Element object to String. Because I need a string to be passed to a particular method. I've tried by using .toString() or using a String variable assigning to it. None of the trials were correct. How can we easily convert and the string object also should show the exact XML structure as it is showing for Element.

Element element = (Element) xmlList.item(i);

The above "element" object shows in XML format. I want to convert the same in String in XML format

Syed
  • 2,471
  • 10
  • 49
  • 89
  • possible duplicate of [How to I output org.w3c.dom.Element to string format in java?](http://stackoverflow.com/questions/1219596/how-to-i-output-org-w3c-dom-element-to-string-format-in-java) – Erik Pragt Sep 23 '15 at 12:15

2 Answers2

15

Try this

needed packages:

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import java.io.StringWriter;

code:

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(<your-element-obj>);
StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);

String strObject = result.getWriter().toString();
Djordje Nedovic
  • 559
  • 8
  • 20
virendrao
  • 1,763
  • 2
  • 22
  • 42
6

You need to use the transformer API.

TransformerFactory.newInstance().newTransformer().transform(new DOMSource(element), new StreamResult(System.out));
emilianogc
  • 880
  • 4
  • 19
  • I don't have external API. – Syed Sep 23 '15 at 12:28
  • 1
    The String for IntelliJ's evaluation window is `javax.xml.transform.TransformerFactory.newInstance().newTransformer().transform(new javax.xml.transform.dom.DOMSource(element), new javax.xml.transform.stream.StreamResult(System.out))` – koppor Jul 07 '21 at 18:54