package org.softlang.company.features;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
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 java.io.File;
import java.io.IOException;
public class Serialization {
/**
* Load a document from a file
*/
public static Document loadDocument(String filename) {
try {
// Create a builder factory
DocumentBuilderFactory factory =
DocumentBuilderFactory.
newInstance();
// Create the builder
DocumentBuilder builder =
factory.
newDocumentBuilder();
// Deserialization by parsing
Document doc =
builder.
parse(new File(filename));
// Done
return doc;
} catch (SAXException e) {
} catch (ParserConfigurationException e) {
} catch (IOException e) {
}
// Return null for any sort of problem
return null;
}
/**
* Save a document to a file.
*/
public static boolean saveDocument(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);
// Creater a transformer factory
TransformerFactory xfactory =
TransformerFactory.
newInstance();
// Create a transformer
Transformer transformer =
xfactory.
newTransformer();
// Force pretty printing
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
// Serialization by transformation
transformer.transform(source, result);
// Done
return true;
} catch (TransformerConfigurationException e) {
} catch (TransformerException e) {
}
// Return false for any sort of problem
return false;
}
/**
* Construct a new document
*/
public static Document createDocument() {
try {
DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.
newInstance();
DocumentBuilder documentBuilder;
documentBuilder = documentBuilderFactory.
newDocumentBuilder();
Document doc =
documentBuilder.
newDocument();
return doc;
} catch (ParserConfigurationException e) {
}
return null;
}
}