Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eg.edu.alexu.csd.oop.db;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.transform.OutputKeys;
- import javax.xml.transform.Transformer;
- 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.NodeList;
- import org.w3c.dom.Node;
- import org.w3c.dom.Element;
- public class XMLtable {
- public void saveXML(String tableName,String path,Map<String,LinkedList> m,List<String> names ) {
- Set<String> keys = m.keySet();
- try {
- DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
- Document doc = docBuilder.newDocument();
- Element rootElement = doc.createElement("table");
- doc.appendChild(rootElement);
- rootElement.setAttribute("name", tableName);;
- Element data = doc.createElement("data");
- rootElement.appendChild(data);
- for(String key:names)
- {
- Element col = doc.createElement("columnData");
- col.appendChild(doc.createTextNode(key));
- data.appendChild(col);
- }
- for(String key:keys)
- {
- Element col = doc.createElement("column");
- col.setAttribute("name", key);
- rootElement.appendChild(col);
- //
- Iterator<Object> iterate = m.get(key).iterator();
- while(iterate.hasNext())
- {
- Element item = doc.createElement("item");
- item.appendChild(doc.createTextNode((String) iterate.next()));
- col.appendChild(item);
- }
- }
- // write the content into xml file
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.setOutputProperty(OutputKeys.METHOD, "xml");
- transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
- DOMSource source = new DOMSource(doc);
- StreamResult result = new StreamResult(new File(path));
- // Output to console for testing
- // StreamResult result = new StreamResult(System.out);
- transformer.transform(source, result);
- System.out.println("File saved!");
- } catch (ParserConfigurationException pce) {
- pce.printStackTrace();
- } catch (TransformerException tfe) {
- tfe.printStackTrace();
- }
- }
- public Table loadXML(String path) {
- String tableName;
- Table t;
- Map<String, LinkedList> mapTable = new HashMap<String, LinkedList>();
- Map<String, String> mapDeclare = new HashMap<String, String>();
- ArrayList<String> names = new ArrayList<String>();
- try {
- File fXmlFile = new File(path);
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(fXmlFile);
- doc.getDocumentElement().normalize();
- Element root = doc.getDocumentElement();
- tableName = root.getAttribute("name");
- Element data = (Element)root.getElementsByTagName("data").item(0);
- NodeList dataList = data.getElementsByTagName("columnData");
- for (int temp = 0; temp < dataList.getLength(); temp++) {
- Node nNode = dataList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- names.add(eElement.getTextContent());
- }
- }
- NodeList colList = root.getElementsByTagName("column");
- for (int temp = 0; temp < colList.getLength(); temp++) {
- Node nNode = colList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- NodeList itemList = eElement.getElementsByTagName("item");
- String key = eElement.getAttribute("name");
- LinkedList<Object> l = new LinkedList<Object>();
- //get column type
- try{
- int colType = Integer.parseInt(itemList.item(0).getTextContent());
- mapDeclare.put(key, "int");
- }catch(Exception exc)
- {
- mapDeclare.put(key, "varchar");
- }
- //
- for(int i=0;i<itemList.getLength();i++)
- {
- Node n = itemList.item(i);
- if(n.getNodeType() == Node.ELEMENT_NODE)
- {
- Element e = (Element)n;
- l.add(e.getTextContent());
- }
- }
- mapTable.put(key, l);
- }
- }
- //return table
- t = new Table(tableName, mapDeclare,names);
- t.setTable(mapTable);
- return t;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement