package XmlUtils;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class XmlUtil {
public static Node sourceToDomNode(Source source) throws TransformerConfigurationException, TransformerException{
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
DOMResult result = new DOMResult();
transformer.transform(source, result);
Node root = result.getNode();
if( root == null ) return null;
root.normalize();
return root;
}
public static String domNodeToString(Node node) throws TransformerConfigurationException, TransformerException{
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
StringWriter sw = new StringWriter();
StreamResult stream = new StreamResult(sw);
DOMSource domSource = new DOMSource(node);
transformer.transform(domSource, stream);
String result = sw.toString();
return result.replaceAll("/>.+<", "/><");
}
public static Document createDomDocument(String xml) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
InputSource input = new InputSource(new StringReader(xml));
Document doc = factory.newDocumentBuilder().parse(xml);
doc.normalizeDocument();
return doc;
} catch (ParserConfigurationException ex) {
System.out.println(ex.getMessage());
} catch (SAXException ex) {
System.out.println(ex.getMessage());
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
return null;
}
public static Document getDocFromSource(Source source) throws TransformerConfigurationException,
TransformerException, ParserConfigurationException, SAXException, IOException{
StringWriter writer = null;
StringReader reader = null;
try{
writer = new StringWriter();
Result streamresult = new StreamResult(writer);
TransformerFactory.newInstance().newTransformer().transform(source, streamresult);
org.xml.sax.InputSource inStream = new org.xml.sax.InputSource();
reader = new java.io.StringReader(writer.toString());
inStream.setCharacterStream(reader);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(inStream);
return doc;
}
finally{
if( writer != null ) writer.close();
if( reader != null ) reader.close();
}
}
}