从第一次接触XML开始就想写一个能实现tree和XML灵活转换的类了。

写这个类大概用去了将近半天的时间,花的时间有些长了。呵呵。。好在收获颇多,熟练了XML的读写类,对C#中的foreach循环也有了更深的认识。

using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Xml; namespace TreeExXML { class TreeExXMLCls { private TreeView thetreeview; private string xmlfilepath; XmlTextWriter textWriter; XmlNode Xmlroot; XmlDocument textdoc; public TreeExXMLCls() { //----构造函数 textdoc = new XmlDocument(); } ~TreeExXMLCls() { //----析构函数 } #region 遍历treeview并实现向XML的转化 /// <summary> /// 遍历treeview并实现向XML的转化 /// </summary> /// <param name="TheTreeView">树控件对象</param> /// <param name="XMLFilePath">XML输出路径</param> /// <returns>0表示函数顺利执行</returns> public int TreeToXML(TreeView TheTreeView, string XMLFilePath) { //-------初始化转换环境变量 thetreeview = TheTreeView; xmlfilepath = XMLFilePath; textWriter = new XmlTextWriter(xmlfilepath, null); //-------创建XML写操作对象 textWriter.Formatting = Formatting.Indented; //-------开始写过程,调用WriteStartDocument方法 textWriter.WriteStartDocument(); //-------写入说明 textWriter.WriteComment("this XML is created from a tree"); textWriter.WriteComment("By 思月行云"); //-------添加第一个根节点 textWriter.WriteStartElement("TreeExXMLCls"); textWriter.WriteEndElement(); //------ 写文档结束,调用WriteEndDocument方法 textWriter.WriteEndDocument(); //-----关闭输入流 textWriter.Close(); //-------创建XMLDocument对象 textdoc.Load(xmlfilepath); //------选中根节点 XmlElement Xmlnode=textdoc.CreateElement(thetreeview.Nodes[0].Text); Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls"); //------遍历原treeview控件,并生成相应的XML TransTreeSav(thetreeview.Nodes, (XmlElement)Xmlroot); return 0; } private int TransTreeSav(TreeNodeCollection nodes, XmlElement ParXmlnode) { //-------遍历树的各个故障节点,同时添加节点至XML 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; } #endregion #region 遍历XML并实现向tree的转化 /// <summary> /// 遍历treeview并实现向XML的转化 /// </summary> /// <param name="XMLFilePath">XML输出路径</param> /// <param name="TheTreeView">树控件对象</param> /// <returns>0表示函数顺利执行</returns> public int XMLToTree(string XMLFilePath,TreeView TheTreeView) { //-------重新初始化转换环境变量 thetreeview = TheTreeView; xmlfilepath = XMLFilePath; //-------重新对XMLDocument对象赋值 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) { //------遍历XML中的所有节点,仿照treeview节点遍历函数 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; } #endregion } }
直接调用相关方法,即可实现Treeview与xml间的相互转换,方便快捷~
除此之外,我们还可以在现有基础上对这个类进行扩展。比方说,我们可以使用Xml中的属性(Attribute)存储所有Treenode的Tag内容。
Xml中属性的使用相对简单:
使用XmlElement.SetAttribute(string name,string value)既可以新增属性,也可以针对旧有属性更改其值。
使用string XmlElement.GetAttribute(string name)可以方便的获得已有属性的值。
以下提供源代码文件下载。

C#实现TreeView向XML的绝对转换类相关推荐

  1. android 中XML和对象转换利器Xstream的使用

    XStream框架: 虽说pull dom dom4j等优秀的xml解析工具使用非常广泛,但对于复杂庞大的数据交互来说,使用它们无疑让你倍加痛苦,你可能大部分精力都放在无聊繁琐的解析和拼装上,如果接口 ...

  2. java xml文件内容替换_java读取xml文件并转换成对象,并进行修改

    1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.java importjava.io.FileInputStream;importjava.io.FileWriter;impo ...

  3. xml 文本转json java_java将XML文档转换成json格式数据

    本篇文章主要介绍了java将XML文档转换成json格式数据的示例,希望能帮助到大家. 功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具 ...

  4. ABAP和XML数据格式互相转换的两种方式

    ABAP和XML数据格式互相转换是广大开发人员经常遇到的需求.本文介绍两种方式. 1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_x ...

  5. DataSet与Xml之间的转换

    DataSet转化为Xml,Xml转化为DataSet,Ado.net中使用方法DataSet.WriteXml()和DataSet.ReadXml(),由于有多个重载方法,所以这里有多条路径可以实现 ...

  6. 好用的对象转xml、xml转对象工具类-支持集合嵌套转换(Java实现)

    好用的对象转xml.xml转对象工具类-支持集合嵌套转换(Java实现) 网上找了很多转换工具,对于自己的业务都不是很合适,所以总结了一下网上的方案,最终定下来是这样子的,主要使用dom4j做操作 m ...

  7. java xml转html_如何在Java中将XML文档转换成HTML文档.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp网页设计/UI 如何在Java中将XML文档转换成HTML文档. ...

  8. java xml 字符串转对象_java读取xml文件并转换成对象,并进行修改

    1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.java import java.io.FileInputStream; import java.io.FileWriter; ...

  9. 为什么用TreeView绑定XML文件时总是提示:根级别上的数据无效。

    为什么用TreeView绑定XML文件时总是提示:根级别上的数据无效. 行 1,位置 1(Data at the root level is invalid.). ================== ...

最新文章

  1. 现有exe转为服务_方式01
  2. linux挂载windows共享的文件夹
  3. 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
  4. 安卓模拟器按键_安卓模拟机(夜神模拟器)
  5. SAP CRM One order appointment duration table
  6. java中对象的生存期_深入理解Java虚拟机-判断对象是否存活算法与对象引用
  7. 的使用go_使用 Go 开发 Prometheus Exporter
  8. 23种设计模式(五)单一职责之装饰模式
  9. iOS几款实用的工具类demo
  10. 联想笔记本电脑整机拆解
  11. Unity3D游戏框架之dll反编译和混淆
  12. 安全测试(BurpSuite)常见检查点
  13. 后端开发java与php,【后端开发】java与php的区别是什么
  14. convert 函数的使用
  15. <OS Concepts> 1- Intro
  16. 从无到有:七步教你做数值(1)
  17. 关于docker报错:No connection could be made because the target machine actively refused it.
  18. 【计算机毕业设计选题】10套易过的精品毕设项目分享(源码+论文)
  19. java 爬虫框架收集
  20. 系统中计算机应用上机,管理系统中计算机应用上机题1

热门文章

  1. Mybatis新发现—在idea中数据库操作出现了异常,最好的查错助手居然是这个!
  2. 什么是AWT_Swing_Scroll面板,上!!!
  3. Eigen教程(7)之归约、迭代器和广播
  4. this指针作为函数参数_C++以指针作为函数参数(学习笔记:第6章 10)
  5. Mysql安装及其配置
  6. 【LaTeX】LaTeX安装美赛模板(mcmthesis)使用笔记(含代码)
  7. OC-NSFileManager
  8. Intel 加速分布式计算系统的三个神器
  9. linux 建立vnc,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  10. MySQL WorkBench中文教程