public void exportToXml(TreeView tv)
{
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.Filter = "Text File (*.xml)|*.xml|Show All Files (*.*)|*.*";
dlg.Title = "Save As";
// Nullable<bool> result = dlg.ShowDialog();
if (dlg.ShowDialog() == true)
{
sr = new StreamWriter(dlg.FileName, false, System.Text.Encoding.UTF8);
// sr = new StreamWriter(filename, false, System.Text.Encoding.UTF8);
//Write the header
sr.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
//Write our root node
sr.WriteLine("</menu>");
foreach (TreeViewItem node in tv.Items)
{
sr.WriteLine("<menu>");
saveNode(node.Items.OfType<TreeViewItem>().ToArray());
sr.WriteLine("</menu>");
}
//Close the root node
sr.WriteLine("</>");
sr.Close();
}
}
private void saveNode(TreeViewItem[] tnc)
{
foreach (TreeViewItem node in tnc)
{
//If we have child nodes, we'll write
//a parent node, then iterrate through
//the children
if (node.Items.Count > 0)
{
public <T> void saveTreeView(TreeView<T> tv) {
FileChooser fc = new FileChooser();
File f = fc.showSaveDialog(null/* your stage */);
if (f != null) {
try (BufferedWriter bw = Files.newBufferedWriter(f.toPath(), StandardCharsets.UTF_8,
StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
saveNode(tv.getRoot(), bw);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private <T> void saveNode(TreeItem<T> root, BufferedWriter writer) throws IOException {
writer.write("<node>");
writer.write(root.getValue().toString());
for (TreeItem<T> child : root.getChildren()) {
saveNode(child, writer);
}
writer.write("</node>");
}
private <T> void saveNode(TreeItem<T> root, BufferedWriter writer) throws IOException {
TreeItem<T> parent= root.getParent();
// {
if( parent!=null){
writer.write("<test22>"+root.getValue().toString()+"</test22>");
}
<menu>
<test222>1</test222>
<Item>
<name>13</name>
</Item>
<menu>
<test222>2</test222>
</menu>
<menu>
<test222>3</test222>
</menu>
<menu>
<test222>1</test222>
<Item>
<test>1</test><test222>13</test222>
<Item>
<test>13</test>
</menu>
writer.write("<test222>"+root.getValue().toString()+"</test222>");
writer.newLine();
writer.write("<Item>");
writer.newLine();
writer.write("<test>"+root.getValue().toString()+"</test>");
for (TreeItem<T> child : root.getChildren()) {
saveNode(child, writer);
}