Java HTML / XML How to - Add namespace prefix XML String using XML DOM








Question

We would like to know how to add namespace prefix XML String using XML DOM.

Answer

import java.io.StringWriter;
// w  ww.j av  a  2  s .c o m
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLFilterImpl;
import org.xml.sax.helpers.XMLReaderFactory;

public class Main {

  public static void main(String args[]) throws Exception {
    XMLReader xmlReader = new XMLFilterImpl(XMLReaderFactory.createXMLReader()) {
      String namespace = "http://www.java2s.com/schemas.xsd";
      String pref = "ns0:";

      @Override
      public void startElement(String uri, String localName, String qName,
          Attributes atts) throws SAXException {
        super.startElement(namespace, localName, pref + qName, atts);
      }

      @Override
      public void endElement(String uri, String localName, String qName)
          throws SAXException {
        super.endElement(namespace, localName, pref + qName);
      }
    };
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer t = tf.newTransformer();
    StringWriter s = new StringWriter();
    t.transform(new SAXSource(xmlReader, new InputSource("test.xml")),
        new StreamResult(s));
    System.out.println(s);
  }
}