c# treeview控件节点数据转为xml文档(借鉴了别人的想法)
首先是加载xml文件,生成treeview,实现之后,对树节点进行删除后,我要保存会xml文件,但是出现问题,希望帮忙看下
//保存
XmlTreeViewOperaCls xml = new XmlTreeViewOperaCls();
SaveFileDialog dlg=new SaveFileDialog();
xml.SaveTreeViewToXml(dlg,treeView1);
MessageBox.Show("TreeView保存成功!");
public class XmlTreeViewOperaCls
{
//定义字段
private string iNodeName = " ";
private string iNodeText = " ";
private string iNodeTag = " ";
//定义类属性
public string NodeName
{
get{return iNodeName;}
set { iNodeName = value;}
}
public string NodeText
{
get{return iNodeText; }
set{ iNodeText = value; }
}
public string NodeTag
{
get { return iNodeTag;}
set {iNodeTag = value;}
}
}
//将TreeView保存到XML文件中
public void SaveTreeViewToXml(SaveFileDialog saveXmlDlg, TreeView treeViewControl)
{
saveXmlDlg.DefaultExt = "xml";
saveXmlDlg.Filter = "XML Files (*.xml)|*.xml";
saveXmlDlg.FilterIndex = 1;
if (saveXmlDlg.ShowDialog() == DialogResult.OK)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<Configs></Configs>");
XmlNode root = doc.DocumentElement;
doc.InsertBefore(doc.CreateXmlDeclaration("1.0", "utf-8","yes"), root);
TreeNodeToXml(treeViewControl.TopNode.Nodes, root);
doc.Save(saveXmlDlg.FileName);
}
}
// 递归的方法读取TreeView控件所有节点并填入XML文件
public void TreeNodeToXml(TreeNodeCollection treeNodes, XmlNode xmlNode)
{
XmlDocument doc = xmlNode.OwnerDocument;
foreach (TreeNode treeNode in treeNodes)
{
//创建一个xml元素(element)
XmlNode element = doc.CreateNode("element", treeNode.Text.ToString(), "");
//创建一个属性Name
XmlAttribute attr = doc.CreateAttribute("Name");
//为属性赋值
attr.Value = treeNode.Text;
//为该元素添加属性
element.Attributes.Append(attr);
//添加元素
xmlNode.AppendChild(element);
if (treeNode.Nodes.Count > 0)
{
TreeNodeToXml(treeNode.Nodes, element);
}
}
}
正常xml文件存储格式
<?xml version="1.0" encoding="utf-8"?>
<Configs>
<Config StoreName="Tag1">
<StoreTime>123</StoreTime>
<StoreMaxCount>321</StoreMaxCount>
<StoreCondition>12</StoreCondition>
</Config>
<Config StoreName="Tag2">
<StoreTime>123</StoreTime>
<StoreMaxCount>321</StoreMaxCount>
<StoreCondition>12</StoreCondition>
</Config>
<Config StoreName="Tag3">
<StoreTime>123</StoreTime>
<StoreMaxCount>321</StoreMaxCount>
<StoreCondition>13</StoreCondition>
</Config>
<Config StoreName="Tag991">
<StoreTime>1212</StoreTime>
<StoreMaxCount>2121</StoreMaxCount>
<StoreCondition>22</StoreCondition>
</Config>
<Config StoreName="Tag100">
<StoreTime>666</StoreTime>
<StoreMaxCount>777</StoreMaxCount>
<StoreCondition>55</StoreCondition>
</Config>
</Configs>
删除节点后保存格式出错
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Configs>
<Tag1 Name="Tag1">
<StoreTime Name="StoreTime">
<999 Name="999" />
</StoreTime>
<StoreMaxCount Name="StoreMaxCount">
<888 Name="888" />
</StoreMaxCount>
<StoreCondition Name="StoreCondition">
<777 Name="777" />
</StoreCondition>
</Tag1>
<Tag2 Name="Tag2">
<StoreTime Name="StoreTime">
<123 Name="123" />
</StoreTime>
<StoreMaxCount Name="StoreMaxCount">
<321 Name="321" />
</StoreMaxCount>
<StoreCondition Name="StoreCondition">
<12 Name="12" />
</StoreCondition>
</Tag2>
<Tag3 Name="Tag3">
<StoreTime Name="StoreTime">
<123 Name="123" />
</StoreTime>
<StoreMaxCount Name="StoreMaxCount">
<321 Name="321" />
</StoreMaxCount>
<StoreCondition Name="StoreCondition">
<13 Name="13" />
</StoreCondition>
</Tag3>
<Tag991 Name="Tag991">
<StoreTime Name="StoreTime">
<1212 Name="1212" />
</StoreTime>
<StoreMaxCount Name="StoreMaxCount">
<2121 Name="2121" />
</StoreMaxCount>
<StoreCondition Name="StoreCondition">
<22 Name="22" />
</StoreCondition>
</Tag991>
<Tag100 Name="Tag100">
<StoreTime Name="StoreTime">
<666 Name="666" />
</StoreTime>
<StoreMaxCount Name="StoreMaxCount">
<777 Name="777" />
</StoreMaxCount>
<StoreCondition Name="StoreCondition">
<55 Name="55" />
</StoreCondition>
</Tag100>
</Configs>