1 package org.splat.manox;
4 * @author Daniel Brunier-Coulin
5 * @copyright OPEN CASCADE 2012
8 import org.apache.log4j.Logger;
10 import java.io.FileNotFoundException;
11 import java.io.FileOutputStream;
12 import java.util.HashMap;
14 import javax.xml.parsers.DocumentBuilder;
15 import javax.xml.parsers.DocumentBuilderFactory;
16 import javax.xml.transform.Transformer;
17 import javax.xml.transform.TransformerConfigurationException;
18 import javax.xml.transform.TransformerException;
19 import javax.xml.transform.TransformerFactory;
20 import javax.xml.transform.dom.DOMSource;
21 import javax.xml.transform.stream.StreamResult;
23 import org.w3c.dom.Element;
24 import org.w3c.dom.Node;
25 import org.w3c.dom.NodeList;
30 private final static Logger logger = Logger.getLogger(XDOM.class);
32 public static org.w3c.dom.Document createDocument (String name) {
33 // ---------------------------------------------------------------
34 DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
36 DocumentBuilder dbuilder = dfactory.newDocumentBuilder();
37 org.w3c.dom.Document document = dbuilder.newDocument();
39 Element root = document.createElement(name);
40 document.appendChild(root);
44 catch (Exception error) {
45 logger.error("Could not create document " + name + ", reason:", error);
50 public static Node getChildNode (String name, Node from) {
51 // --------------------------------------------------------
52 NodeList nlist = from.getChildNodes();
53 for (int i=0; i<nlist.getLength(); i++) {
54 Node cnode = nlist.item(i);
55 if (cnode.getNodeName().equals(name)) return cnode;
60 public static HashMap<String,Node> getNamedChildNodes (Node node) {
61 // -----------------------------------------------------------------
62 HashMap<String,Node> result = new HashMap<String,Node>();
63 NodeList nlist = node.getChildNodes();
64 for (int i=0; i<nlist.getLength(); i++) {
66 String name = node.getNodeName();
67 if (name.startsWith("#")) continue;
68 result.put(name, node);
73 public static boolean saveDocument (File xmlOutputFile, org.w3c.dom.Document doc) {
74 // ---------------------------------------------------------------------------------
75 // Open output stream where XML Document will be saved
76 // File xmlOutputFile = new File(fileName);
78 Transformer transformer;
80 fos = new FileOutputStream(xmlOutputFile);
82 catch (FileNotFoundException error) {
83 logger.error("Could not open the " + xmlOutputFile.getName() + " file, reason:", error);
86 // Use a Transformer for output
87 TransformerFactory transformerFactory = TransformerFactory.newInstance();
89 transformer = transformerFactory.newTransformer();
91 catch (TransformerConfigurationException error) {
92 logger.error("Transformer configuration error, reason:", error);
95 DOMSource source = new DOMSource(doc);
96 StreamResult result = new StreamResult(fos);
97 // Transform source into result will do save
99 transformer.transform(source, result);
101 catch (TransformerException error) {
102 logger.error("Error during XML transformation, reason:", error);