/**
* XMLHelper.java
* Created On 2006, May 18, 2006 3:18:37 PM
* @author E. Rajasekar
*/
package app.astrosoft.export;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
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.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XMLHelper {
private static final Logger log = Logger.getLogger(XMLHelper.class.getName());
public static Document createDOM() {
try {
DocumentBuilder db = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
return db.newDocument();
} catch (ParserConfigurationException pce) {
log.log(Level.SEVERE, "Exception in creating document ", pce);
return null;
}
}
public static Element addRootElement(Document doc, Object name) {
Element rootElement = doc.createElement(name.toString());
doc.appendChild(rootElement);
return rootElement;
}
public static Element addElement(Document doc, Element parent, Object name,
String value) {
Element element = doc.createElement(name.toString());
parent.appendChild(element);
if (value != null) {
element.appendChild(doc.createTextNode(value));
}
return element;
}
public static Element addElement(Document doc, Element parent, Object name){
return addElement(doc, parent, name, null);
}
public static void addAttribute(Element parent, Object name, Object value) {
if (value == null) {
parent.setAttribute(name.toString(), "");
} else {
parent.setAttribute(name.toString(), value.toString());
}
}
public static Map<String, String> getChildElements(Node parent){
Map<String, String> elements = new HashMap<String, String>();
NodeList children = parent.getChildNodes();
for(int i = 0; i < children.getLength(); i++){
Node child = children.item(i);
elements.put(child.getNodeName(), child.getTextContent());
}
return elements;
}
public static Node getChildNode(Node parent, String nodeName){
Node node = null;
NodeList children = parent.getChildNodes();
for(int i = 0; i < children.getLength(); i++){
Node child = children.item(i);
if (child.getNodeName().equals(nodeName)){
node = child;
break;
}
}
return node;
}
public static Document parseXML(String fileName){
Document document = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance ();
// Do not generate comment nodes.
factory.setIgnoringComments (true);
// Eliminate whitespace in element content.
factory.setIgnoringElementContentWhitespace (true);
// Validate the document against its XSD.
factory.setValidating (false);
// Respect name space
factory.setNamespaceAware (true);
try
{
document = factory.newDocumentBuilder ().parse (new File(fileName));
}catch(ParserConfigurationException e){
log.log(Level.SEVERE, "Exception in parsing XML " ,e);
}catch(IOException e){
log.log(Level.SEVERE, "Exception in parsing XML " ,e);
}catch (SAXException e) {
log.log(Level.SEVERE, "Exception in parsing XML " ,e);
}
return document;
}
// This method writes a DOM document to a file
public static void saveXML(Document doc, String fileName) {
try {
// Prepare the DOM document for writing
Source source = new DOMSource(doc);
// Prepare the output file
File file = new File(fileName);
Result result = new StreamResult(file);
// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);
} catch (Exception e) {
log.log(Level.SEVERE, "Exception in creating document ", e);
}
}
}