zoukankan      html  css  js  c++  java
  • 转换成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);
                    }

                }

            }


  • 相关阅读:
    linux学习
    linux学习--常用基本命令
    expect学习
    linux学习-cut,ssh keygen ,find
    expect
    告别痛苦,快乐学习Pandas!开源教程《Joyful-Pandas》发布
    iBooker 财务提升星球 2020.2~3 热门讨论
    计算机电子书 2020 CDNDrive 备份(预览版)
    poj2017
    poj2000
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/1760268.html
Copyright © 2011-2022 走看看