转化为xml的问题
怎样将一个TreeView转化为XML导出?
[解决办法]
自己遍历节点,写到xml,跟LINQ没关系 ,treeview的nodes不能用LINQ
[解决办法]
可以用对象
XmlSerializer 序列化与反序列化XML 这样操作更方便
[解决办法]
XmlTextWriter tw;public void WriteXML(TreeNodeCollection tc){ foreach (TreeNode Node in tc) { WriteOneXML(Node); WriteXML(Node.Nodes); tw.WriteEndElement(); }} private void WriteOneXML(TreeNode Node){ string objid = Node.Tag.ToString(); string objName = Node.Text; tw.WriteStartElement("cantoncode" + (Node.Level + 1)); tw.WriteAttributeString("cantoncode", objid); tw.WriteAttributeString("cantonname", objName); } private void button3_Click(object sender, EventArgs e){ string fileName = @"C:/cantoncode.xml"; tw = new XmlTextWriter(fileName, null); tw.Formatting = Formatting.Indented; tw.WriteStartDocument(); tw.WriteStartElement("cantoncode"); WriteXML(treeView1.Nodes); tw.WriteEndElement(); tw.WriteEndDocument(); tw.Flush(); tw.Close();}
[解决办法]
最简单的把 TreeNode.Text 保存为 Xml 节点名的例子
// 方法private static void TreeToXml(TreeNodeCollection tree, XmlDocument xmlDoc, XmlNode xml){ foreach (TreeNode item in tree) { XmlNode node = xml.AppendChild(xmlDoc.CreateElement(item.Text)); TreeToXml(item.Nodes, xmlDoc, node); }}// 调用XmlDocument xmlDoc = new XmlDocument();xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));XmlNode root = xmlDoc.AppendChild(xmlDoc.CreateElement("root"));TreeToXml(某TreeView.Nodes, xmlDoc, root);xmlDoc.Save("保存路径");