Java HTML / XML How to - Transform by starting tag








Question

We would like to know how to transform by starting tag.

Answer

import java.io.File;
import java.io.FileReader;
// w  ww.j a  va2 s.com
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

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