Java HTML / XML How to - Get xml node as string in Stax








Question

We would like to know how to get xml node as string in Stax.

Answer

import java.io.File;
import java.io.FileReader;
//  ww w  .j a v a2s  .c  o  m
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stax.StAXSource;
import javax.xml.transform.stream.StreamResult;

public class Main {

  public static void main(String[] args) throws Exception {
    XMLInputFactory xif = XMLInputFactory.newInstance();
    XMLStreamReader xsr = xif
        .createXMLStreamReader(new FileReader("input.xml"));
    xsr.nextTag(); // Advance to statements element

    while (xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
      TransformerFactory tf = TransformerFactory.newInstance();
      Transformer t = tf.newTransformer();
      File file = new File("out" + xsr.getAttributeValue(null, "account")
          + ".xml");
      t.transform(new StAXSource(xsr), new StreamResult(file));
    }
  }

}