package helpmaker.util; import helpmaker.model.XMLNodeItemExtended; import helpmaker.model.XMLParameter; import javafx.collections.ObservableList; import javafx.scene.control.TreeItem; import java.io.*; import java.util.ArrayList; import java.util.List; public class XMLTreeSave { public static void saveTreeToFile(TreeItem<XMLNodeItemExtended> rootItem, String fileName) { try { BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(fileName)))); writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"); writer.newLine(); writeNode(writer, rootItem); writer.flush(); writer.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static void writeNode(BufferedWriter writer, TreeItem<XMLNodeItemExtended> node) throws IOException { writer.write("<"+node.getValue().getNodeName()); writeCurrentParameters(writer, node); writer.write(">"); ObservableList<TreeItem<XMLNodeItemExtended>> childList = node.getChildren(); for (TreeItem<XMLNodeItemExtended> currentChild : childList) { writeNode(writer, currentChild); } writer.write("</"+node.getValue().getNodeName()+">"); } private static void writeCurrentParameters(BufferedWriter writer, TreeItem<XMLNodeItemExtended> node) throws IOException { List<XMLParameter> parameters = node.getValue().getParameters(); writer.write(" "+XMLParameter.PARAMETER_CAPTION+"=\""+node.getValue().getCaption()+"\""); for (XMLParameter param : parameters) { writer.write(" "+param.getKey()+"=\""+param.getValue()+"\""); } } }