转换成XmlDocument

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

首先,先添加两个方法用来获取根节点下的一级子节点,以及获取某节点下的一级节点。
如:
None.gif public  PMBSCClass[] GetSubPMBSCClasses(Guid enterpriseUID, Guid bscClassUID)
None.gif
public  PMBSCClass[] GetRootPMBSCClasses(Guid enterpriseUID)

然后,是两个辅助转换的方法:
None.gif          public  XmlDocument GetBscXmlDocment(Guid enterpriseUID)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            XmlDocument doc 
= new XmlDocument();
InBlock.gif
InBlock.gif            XmlDeclaration declare 
= doc.CreateXmlDeclaration("1.0""UTF-8""yes");//创建一个声明
InBlock.gif
            doc.InsertBefore(declare, doc.DocumentElement);//把声明添加到文档元素的顶部
InBlock.gif

InBlock.gif            XmlElement root 
= doc.CreateElement("Nodes");//添加根节点
InBlock.gif
            doc.AppendChild(root);
InBlock.gif
InBlock.gif            PMBSCClass[] rootBscs 
= GetRootPMBSCClasses(enterpriseUID);
InBlock.gif            
if(rootBscs != null && rootBscs.Length > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                MakeDoc(doc, root, rootBscs);
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
InBlock.gif            
InBlock.gif            
return doc;
ExpandedBlockEnd.gif        }

None.gif        
private   void  MakeDoc(XmlDocument doc, XmlElement rootElem, PMBSCClass[] bscs)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
foreach(PMBSCClass bsc in bscs)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
//创建子节点
InBlock.gif
                XmlElement elem = doc.CreateElement("ItemNode");
InBlock.gif                rootElem.AppendChild(elem);
InBlock.gif
InBlock.gif                
//创建新节点的Text属性
InBlock.gif
                XmlAttribute textAtt = doc.CreateAttribute("Text");
InBlock.gif                textAtt.Value 
= bsc.Name;
InBlock.gif                elem.SetAttributeNode(textAtt);
InBlock.gif
InBlock.gif                
//创建新节点的Value属性
InBlock.gif
                XmlAttribute valueAtt = doc.CreateAttribute("Value");
InBlock.gif                valueAtt.Value 
= bsc.BSCClassUID.ToString();
InBlock.gif                elem.SetAttributeNode(valueAtt);
InBlock.gif
InBlock.gif                PMBSCClass[] subBscs 
= GetSubPMBSCClasses(bsc.EnterpriseUID, bsc.BSCClassUID);
InBlock.gif                
if(subBscs != null && subBscs.Length > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
//如果当前元素有子元素,则递归生成字的节子点。
InBlock.gif
                    MakeDoc(doc, elem, subBscs);
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }

None.gif

转载于:https://www.cnblogs.com/BillChen/archive/2005/09/13/235986.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值