读取TreeView内容写到Xml。 本帖最后由 binjoo 于 2009-06-06 18:37:23 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <summary> /// 将TreeView保存到XML文件中 /// </summary> /// <param name="saveXmlDlg">保存文件对话框</param> /// <param name="treeViewControl">节点集合</param> 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("<分类体系></分类体系>"); XmlNode root = doc.DocumentElement; doc.InsertBefore(doc.CreateXmlDeclaration("1.0", "utf-8", "yes"), root); TreeNodeToXml(treeViewControl.TopNode.Nodes, root); doc.Save(saveXmlDlg.FileName); } } /// <summary> /// 递归的方法读取TreeView控件所有节点并填入XML文件 /// </summary> /// <param name="treeNodes">所有节点集合</param> /// <param name="xmlNode">xml文档中的单个节点</param> public void TreeNodeToXml(TreeNodeCollection treeNodes, XmlNode xmlNode) { XmlDocument doc = xmlNode.OwnerDocument; foreach (TreeNode treeNode in treeNodes) { //创建一个xml元素(element) XmlNode element = doc.CreateNode("element", treeNode.Name.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); } } } 读 treeview 里面的 treenode.text 域就是显示的文本。按树的结构进行迭代。使用 XMLWriter 类进行写XML文件。TreeView 类TreeNode 类XmlWriter 类用 XmlWriter 编写 XML class TreeExXMLCls { private TreeView thetreeview; private string xmlfilepath; XmlTextWriter textWriter; XmlNode Xmlroot; XmlDocument textdoc; public TreeExXMLCls() { textdoc = new XmlDocument(); } public int TreeToXML(TreeView TheTreeView, string XMLFilePath) { thetreeview = TheTreeView; xmlfilepath = XMLFilePath; textWriter = new XmlTextWriter(xmlfilepath, null); textWriter.Formatting = Formatting.Indented; textWriter.WriteStartDocument(); textWriter.WriteComment("this XML is created from a tree"); textWriter.WriteComment(""); textWriter.WriteStartElement("TreeExXMLCls"); textWriter.WriteEndElement(); textWriter.WriteEndDocument(); textWriter.Close(); textdoc.Load(xmlfilepath); XmlElement Xmlnode=textdoc.CreateElement(thetreeview.Nodes[0].Text); Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls"); TransTreeSav(thetreeview.Nodes, (XmlElement)Xmlroot); return 0; } private int TransTreeSav(TreeNodeCollection nodes, XmlElement ParXmlnode) { XmlElement xmlnode; Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls"); foreach (TreeNode node in nodes) { xmlnode = textdoc.CreateElement(node.Text); ParXmlnode.AppendChild(xmlnode); if (node.Nodes.Count > 0) { TransTreeSav(node.Nodes, xmlnode); } } textdoc.Save(xmlfilepath); return 0; } public int XMLToTree(string XMLFilePath,TreeView TheTreeView) { thetreeview = TheTreeView; xmlfilepath = XMLFilePath; textdoc.Load(xmlfilepath); XmlNode root = textdoc.SelectSingleNode("TreeExXMLCls"); foreach (XmlNode subXmlnod in root.ChildNodes) { TreeNode trerotnod = new TreeNode(); trerotnod.Text = subXmlnod.Name; thetreeview.Nodes.Add(trerotnod); TransXML(subXmlnod.ChildNodes, trerotnod); } return 0; } private int TransXML(XmlNodeList Xmlnodes,TreeNode partrenod) { foreach (XmlNode xmlnod in Xmlnodes) { TreeNode subtrnod = new TreeNode(); subtrnod.Text = xmlnod.Name; partrenod.Nodes.Add(subtrnod); if (xmlnod.ChildNodes.Count > 0) { TransXML(xmlnod.ChildNodes, subtrnod); } } return 0; } }参考 XmlDocument computerXml = new XmlDocument(); computerXml.Load("../../computer.xml"); XmlNode root = computerXml.DocumentElement; TreeNode tvRoot=null; TreeNode tvContent; foreach (XmlNode sort in root.ChildNodes) { foreach (XmlNode s in sort.ChildNodes) { switch(s.Name){ case "Name": //Console.WriteLine(s.InnerText); tvRoot = treeView1.Nodes.Add(s.InnerText); break; case "Content": foreach(XmlNode x in s.ChildNodes){ switch (x.Name) { case "Title": // Console.WriteLine(x.InnerText); tvContent = tvRoot.Nodes.Add(x.InnerText); break; //case "Database": // Console.WriteLine(x.InnerText); // break; } } break; } } } C# datagridview 更新 如何录取其他程序播放的声音或者声卡输出的音频??(录取QQ通话) 在winform中,我要从数据库中查询大量的数据,并用DATAgrid显示,但是在处理数据,还未在datagrid显示前,窗口老是像死掉状,我想用线程 关于提供下载的问题? 调查,大家的收藏的代码都是怎么分类的?(见者有分哦) C#中怎么把输入的信息保存在文本文档中哦 文件下载的问题, 在线等 请教有关几个控件或菜单相互联系的问题 GDI+绘图问题 一切为了学C# c#中的事务非数据库中事务问题 C#创建excel文件
/// 将TreeView保存到XML文件中
/// </summary>
/// <param name="saveXmlDlg">保存文件对话框</param>
/// <param name="treeViewControl">节点集合</param>
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("<分类体系></分类体系>");
XmlNode root = doc.DocumentElement;
doc.InsertBefore(doc.CreateXmlDeclaration("1.0", "utf-8", "yes"), root);
TreeNodeToXml(treeViewControl.TopNode.Nodes, root);
doc.Save(saveXmlDlg.FileName);
}
} /// <summary>
/// 递归的方法读取TreeView控件所有节点并填入XML文件
/// </summary>
/// <param name="treeNodes">所有节点集合</param>
/// <param name="xmlNode">xml文档中的单个节点</param>
public void TreeNodeToXml(TreeNodeCollection treeNodes, XmlNode xmlNode)
{
XmlDocument doc = xmlNode.OwnerDocument;
foreach (TreeNode treeNode in treeNodes)
{
//创建一个xml元素(element)
XmlNode element = doc.CreateNode("element", treeNode.Name.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);
}
}
}
{
private TreeView thetreeview;
private string xmlfilepath;
XmlTextWriter textWriter;
XmlNode Xmlroot;
XmlDocument textdoc;
public TreeExXMLCls()
{
textdoc = new XmlDocument();
}
public int TreeToXML(TreeView TheTreeView, string XMLFilePath)
{
thetreeview = TheTreeView;
xmlfilepath = XMLFilePath;
textWriter = new XmlTextWriter(xmlfilepath, null);
textWriter.Formatting = Formatting.Indented;
textWriter.WriteStartDocument();
textWriter.WriteComment("this XML is created from a tree");
textWriter.WriteComment("");
textWriter.WriteStartElement("TreeExXMLCls");
textWriter.WriteEndElement();
textWriter.WriteEndDocument();
textWriter.Close();
textdoc.Load(xmlfilepath);
XmlElement Xmlnode=textdoc.CreateElement(thetreeview.Nodes[0].Text);
Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls");
TransTreeSav(thetreeview.Nodes, (XmlElement)Xmlroot);
return 0;
}
private int TransTreeSav(TreeNodeCollection nodes, XmlElement ParXmlnode)
{
XmlElement xmlnode;
Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls"); foreach (TreeNode node in nodes)
{
xmlnode = textdoc.CreateElement(node.Text);
ParXmlnode.AppendChild(xmlnode); if (node.Nodes.Count > 0)
{
TransTreeSav(node.Nodes, xmlnode);
}
}
textdoc.Save(xmlfilepath); return 0;
}
public int XMLToTree(string XMLFilePath,TreeView TheTreeView)
{
thetreeview = TheTreeView;
xmlfilepath = XMLFilePath;
textdoc.Load(xmlfilepath);
XmlNode root = textdoc.SelectSingleNode("TreeExXMLCls");
foreach (XmlNode subXmlnod in root.ChildNodes)
{
TreeNode trerotnod = new TreeNode();
trerotnod.Text = subXmlnod.Name;
thetreeview.Nodes.Add(trerotnod);
TransXML(subXmlnod.ChildNodes, trerotnod);
}
return 0;
} private int TransXML(XmlNodeList Xmlnodes,TreeNode partrenod)
{
foreach (XmlNode xmlnod in Xmlnodes)
{
TreeNode subtrnod = new TreeNode();
subtrnod.Text = xmlnod.Name;
partrenod.Nodes.Add(subtrnod); if (xmlnod.ChildNodes.Count > 0)
{
TransXML(xmlnod.ChildNodes, subtrnod);
}
}
return 0;
}
}
参考
computerXml.Load("../../computer.xml");
XmlNode root = computerXml.DocumentElement;
TreeNode tvRoot=null;
TreeNode tvContent;
foreach (XmlNode sort in root.ChildNodes) {
foreach (XmlNode s in sort.ChildNodes) {
switch(s.Name){
case "Name":
//Console.WriteLine(s.InnerText);
tvRoot = treeView1.Nodes.Add(s.InnerText);
break;
case "Content":
foreach(XmlNode x in s.ChildNodes){
switch (x.Name) {
case "Title":
// Console.WriteLine(x.InnerText);
tvContent = tvRoot.Nodes.Add(x.InnerText);
break;
//case "Database":
// Console.WriteLine(x.InnerText);
// break;
}
}
break;
}
}
}