为了把有层次关系的数据邦定到树型控件或者菜单控件时,经常需要用到XmlDocument,因为数据源不是xml文件,而是保存到表中,通常这种表的字段会有一个ID和一个父ID,如果返回的一个数组,则我们需要把具有层次关系的数组转换成为XmlDocument然后邦定到控件上。

首先,先添加两个方法用来获取根节点下的一级子节点,以及获取某节点下的一级节点。
如:

public PMBSCClass[] GetSubPMBSCClasses(Guid enterpriseUID, Guid bscClassUID)
public PMBSCClass[] GetRootPMBSCClasses(Guid enterpriseUID)

然后,是两个辅助转换的方法:

        public XmlDocument GetBscXmlDocment(Guid enterpriseUID)
        {
            XmlDocument doc = new XmlDocument();

            XmlDeclaration declare = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");//创建一个声明
            doc.InsertBefore(declare, doc.DocumentElement);//把声明添加到文档元素的顶部

            XmlElement root = doc.CreateElement("Nodes");//添加根节点
            doc.AppendChild(root);

            PMBSCClass[] rootBscs = GetRootPMBSCClasses(enterpriseUID);
            if(rootBscs != null && rootBscs.Length > 0)
            {
                MakeDoc(doc, root, rootBscs);
            }

            
            
            return doc;
        }
        private void MakeDoc(XmlDocument doc, XmlElement rootElem, PMBSCClass[] bscs)
        {
            foreach(PMBSCClass bsc in bscs)
            {
                //创建子节点
                XmlElement elem = doc.CreateElement("ItemNode");
                rootElem.AppendChild(elem);

                //创建新节点的Text属性
                XmlAttribute textAtt = doc.CreateAttribute("Text");
                textAtt.Value = bsc.Name;
                elem.SetAttributeNode(textAtt);

                //创建新节点的Value属性
                XmlAttribute valueAtt = doc.CreateAttribute("Value");
                valueAtt.Value = bsc.BSCClassUID.ToString();
                elem.SetAttributeNode(valueAtt);

                PMBSCClass[] subBscs = GetSubPMBSCClasses(bsc.EnterpriseUID, bsc.BSCClassUID);
                if(subBscs != null && subBscs.Length > 0)
                {
                    //如果当前元素有子元素,则递归生成字的节子点。
                    MakeDoc(doc, elem, subBscs);
                }
            }
        }

转载于:https://www.cnblogs.com/chenjunbiao/archive/2005/09/13/1760268.html

转换成XmlDocument相关推荐

  1. python将object转换为float_DataFrame中的object转换成float的方法

    DataFrame中的object转换成float的方法 数据类型转换: 今天遇到一个问题,就是DataFrame类型的数据里是str型的数字,想把数字转换为int 或float:百度没有发现好的,也 ...

  2. js 如何将汉字转换成拼音

    js 如何将汉字转换成拼音 有多种方法,你可以使用插件,pinyin.js,访问地址:请移步 pinyin.js链接 demo下载地址:http://download.csdn.net/detail/ ...

  3. 分享一个小工具:Excel表高速转换成JSON字符串

    在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...

  4. JAVA CP936编码转utf8_对一个目录的文件从cp936转换成utf-8

    打开一个文件,确认能够无乱码打开 [xw@localhost work]$ vi NPOSP/src/sjl05.cpp 但是,这里打开的方式是以cp936的编码方式打开的. 编码的选择,记录在~/. ...

  5. opencv把图片转换成二进制_如何增强图像,然后使用Python和OpenCV将其转换为二进制图像?...

    我创建了一个简单的例子来说明我要做的事情:#!/usr/bin/python #------------------------------------------------------------ ...

  6. php png jpg,php如何将png转换成jpg-PHP问题

    各人应该城市比拟分明,jpg格局图片比png格局图片往往有更高的紧缩率.因而普通状况下,咱们愈加心愿应用者应用png格局图片,而没有是jpg格局的. 然而咱们又往往无奈限度应用者应用jpg格局图片仍是 ...

  7. 使用nmonchart把.nmon文件转换成html

    转载:https://blog.csdn.net/zd470015321/article/details/68923280 我的环境 :centos6.6 下载地址 nmon: http://nmon ...

  8. 得到的旋转向量和平移向量转换成旋转矩阵 (SE(3))

    理论过程 头文件说明 1.使用罗德里格斯公式需要包含头文件为#include<opencv2/calib3d.hpp> 2.使用函数cv2eigen需要包含头文件<opencv2/c ...

  9. 怎么帮java转换成类图_有把java代码直接转成uml类图的工具吗 – 手机爱问

    2012-05-31 如何将JAVA程序转化成C程序? 给你代码: typedef unsigned char byte; //这是个转换的基础数组,使用查表的方法将十六进制字符转换成数值 stati ...

  10. 如何把html转换pdf,怎么把html转换成pdf

    1.怎么将html格式文件转成pdf 1这个方法是我认为最简单.高效的,只要安装了360浏览器.火狐浏览器或谷歌浏览器就可以轻松实现.下面笔者以360浏览器为例,我们只要在浏览器的右上角点击" ...

最新文章

  1. JavaScript下拉菜单的例子
  2. VS2019配置opencv环境时找不到Microsoft.Cpp.x64.user.props
  3. Windows下 MySQL命令 常用操作
  4. 【每日算法】桶排序算法
  5. sqlserver数据库事务
  6. PAT1042 字符统计 (20 分)
  7. 测试工具之badboy
  8. pytrhon画图matplolib
  9. mysql数据库乱码检查项
  10. gitlab 远程仓库回退到指定版本
  11. 什么是Apple Pay?
  12. Spring mvc 项目整合P6Spy
  13. linux备份目录命令tar,Linux中使用tar命令备份与还原数据
  14. 第八届 GopherChina 大会蓄势待发!
  15. [精简]托福核心词汇78
  16. 【12c】12c RMAN新特性之recover table(表级别恢复)
  17. transitive fanout与set_dont_touch_network
  18. 决策树:ID3C4.5cart算法(从原理到实现-小白教程超详细)
  19. unia-app第三方app调用
  20. 汉语拼音方案里的O(哦)和 UO(窝)

热门文章

  1. power系列服务器问题PA模板,与 Power BI 报表服务器集成
  2. Fffmpeg:从AVFrame中由YUV获取RGB
  3. VirtualBox虚拟机如何选中“启用嵌套 VT-x/AMD-V”
  4. LINUX加载静态库so,取得函数地址并调用
  5. warning C4996 sprintf This function or variable may be unsafe
  6. 热感传导不能证明经络的存在
  7. 如何在C中调用C++的示例代码
  8. 什么是 POD 数据类型
  9. 远程执行python脚本_python 远程执行服务器上的脚本
  10. python函数传递列表_python传递列表作为函数参数