I want to add namespace prefix to all the elements in the XML String using XML DOM. E.g. My String is coming in this way:
We can do it with Transformer + SAX. Try this:
import java.io.StringWriter;
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 Test {
public static void main(String args[]) throws Exception {
XMLReader xmlReader = new XMLFilterImpl(XMLReaderFactory.createXMLReader()) {
String namespace = "http://www.tibco.com/schemas/BWStatistics-hawk/Schema.xsd2";
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);
}
}