将树视图节点和标记导出到XML

时间:2014-06-11 11:52:45

标签: c# xml treeview

我的表单中有一个Treeview控件和一个多行文本框显示。我也有一个DataTable,每个数据行包含一个实验参数。动态创建节点,每个节点单击在文本框中显示相应的参数(使用Afterselect事件)。为了连接节点和数据行,我添加了一个自定义类对象作为节点标签,我存储节点名称,节点号等。

我希望实施'保存'函数和我想在单独的xml中导出我的treeview节点。但是,我无法找到一种方法来导出标记对象,只使用这种递归方法输出文本:

    public class NodeTag
    {
        public string NodeName;
        public string NodeFunc;
        public int NodeNumber;
        public DataRow datarow;
    }

    private void btn_save_Click(object sender, EventArgs e)
    {
        xr = new XmlTextWriter("treeview.xml", System.Text.Encoding.UTF8);
        xr.WriteStartDocument();
        //Write our root node
        xr.WriteStartElement(treeView1.Nodes[0].Text);
        foreach (TreeNode node in treeView1.Nodes)
        {
            saveNode2(node.Nodes);
        }
        //Close the root node
        xr.WriteEndElement();
        xr.Close();
    }

    private void saveNode2(TreeNodeCollection tnc)
    {
        foreach (TreeNode node in tnc)
        {
            //If we have child nodes, we'll write 
            //a parent node, then iterrate through
            //the children

            if (node.Nodes.Count > 0)
            {
                xr.WriteStartElement(node.Text);
                saveNode2(node.Nodes);
                xr.WriteEndElement();
            }
            else //No child nodes, so we just write the text
            {
                xr.WriteString(node.Text);


            }
        }
    }

我不熟悉XML导出,所以任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

查看有关将类导出到xml的this链接

基本上,您使用XmlSerializer将类导出到XML。使用要导出的类上的属性可以确定如何命名节点和此类名称