• 转换成XmlDocument


    为了把有层次关系的数据邦定到树型控件或者菜单控件时,经常需要用到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);
                    }

                }

            }


  • 相关阅读:
    double 和 int 同时存在时的运算
    快速排序
    案例:商品放大镜效果
    淘宝flexible.js源码分析
    案例:模态框拖拽
    Web APIs——BOM
    案例:获取URL参数数据
    案例:5秒之后自动跳转页面
    JS中this指针的指向
    按钮:点击发送短信按钮60秒内不能再次点击的功能
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/1760268.html
Copyright © 2020-2023  润新知