Salome HOME
8cc45982fe8676bd66126b7228381a3e992d5ba3
[tools/siman.git] / Workspace / SPlat / src / org / splat / manox / XDOM.java
1 package org.splat.manox;
2 /**
3  * 
4  * @author    Daniel Brunier-Coulin
5  * @copyright OPEN CASCADE 2012
6  */
7
8 import org.apache.log4j.Logger;
9 import java.io.File;
10 import java.io.FileNotFoundException;
11 import java.io.FileOutputStream;
12 import java.util.HashMap;
13
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;
22
23 import org.w3c.dom.Element;
24 import org.w3c.dom.Node;
25 import org.w3c.dom.NodeList;
26
27
28 public class XDOM {
29
30     private final static  Logger  logger = Logger.getLogger(XDOM.class);
31
32     public static org.w3c.dom.Document createDocument (String name) {
33 //  ---------------------------------------------------------------
34       DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
35       try {
36         DocumentBuilder      dbuilder = dfactory.newDocumentBuilder();
37         org.w3c.dom.Document document = dbuilder.newDocument();
38             
39         Element root = document.createElement(name); 
40         document.appendChild(root);
41
42         return document;
43       }
44       catch (Exception error) {
45         logger.error("Could not create document " + name + ", reason:", error);
46         return null;
47       }
48         }
49
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;
56       }
57       return null;
58     }
59
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++) {
65         node = nlist.item(i);
66         String name = node.getNodeName();
67         if (name.startsWith("#")) continue;
68         result.put(name, node);
69       }
70       return result;
71         }
72         
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);
77       FileOutputStream  fos;
78       Transformer       transformer;
79       try {
80         fos = new FileOutputStream(xmlOutputFile);
81       }
82       catch (FileNotFoundException error) {
83         logger.error("Could not open the " + xmlOutputFile.getName() + " file, reason:", error);
84         return false;
85       }
86 //    Use a Transformer for output
87       TransformerFactory transformerFactory = TransformerFactory.newInstance();
88       try {
89         transformer = transformerFactory.newTransformer();
90       }
91       catch (TransformerConfigurationException error) {
92         logger.error("Transformer configuration error, reason:", error);
93         return false;
94       }
95       DOMSource    source = new DOMSource(doc);
96       StreamResult result = new StreamResult(fos);
97 //    Transform source into result will do save
98       try {
99         transformer.transform(source, result);
100       }
101       catch (TransformerException error) {
102         logger.error("Error during XML transformation, reason:", error);
103       }
104       return true;
105     }
106 }