首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

根据自己的xml生成树,有关问题解决马上结账

2012-01-01 
根据自己的xml生成树,问题解决马上结账?xml version1.0 encodingutf-8 standaloneyes?RuleUni

根据自己的xml生成树,问题解决马上结账
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<RuleUnit xmlns="Dtsc.Common.RuleEngine">
  <RuleList>
  <Rule id="Action id">
  <Condition DataType="ConditionDataType">
  <OperatorNumber DataType="OperDataType" ParameterID="OperParameterID" Value="OperValue" />
  <OperatorChar Value="OperCharValue" />
  </Condition>
  <Action IsFinallyAction="true" id="Action id">
  </Action>
  </Rule>
  <Rule id="Action id1">
  <Condition DataType="ConditionDataType1">
  <OperatorNumber DataType="OperDataType1" ParameterID="OperParameterID1" Value="OperValue1" />
  <OperatorChar Value="OperCharValue1" />
  </Condition>
  <Action IsFinallyAction="true" id="Action id1">
  </Action>
  </Rule>
  </RuleList>
</RuleUnit>
上面是我的xml文档,请问下怎么生成树,请各位大哥大姐给出代码参考,问题解决马上结账

[解决办法]
我来给你解答吧

C# code
        private void button1_Click(object sender, EventArgs e)        {            XmlDocument ParaDoc = new XmlDocument();            ParaDoc.Load(@"D:\test.xml");            XmlNodeReader ParaReader = new XmlNodeReader(ParaDoc);                        TreeNode tn = new TreeNode();            tn.Text = "Document";            treeView1.Nodes.Add(tn);            GetTreeFromXml(ParaReader, tn);        }        private void GetTreeFromXml(XmlNodeReader pr, TreeNode tn)        {            TreeNode newTn = new TreeNode();            while(pr.Read())                {                switch (pr.NodeType)                {                    case XmlNodeType.XmlDeclaration:                    case XmlNodeType.Comment:                        newTn.Text = pr.NodeType.ToString() + ":" + pr.Value ;                        tn.Nodes.Add(newTn);                        break;                    case XmlNodeType.Text:                        newTn.Text = pr.Value;                        tn.Nodes.Add(newTn);                        break;                    case XmlNodeType.EndElement:                        tn = tn.Parent;                        break;                    case XmlNodeType.Element:                        if(!pr.IsEmptyElement)                        {                            newTn.Text=pr.Name;                            tn.Nodes.Add(newTn);                            if(pr.HasAttributes)                            {                                for(int i=0;i<pr.AttributeCount;i++)                                {                                    pr.MoveToAttribute(i);                                    newTn.Text=newTn.Text+","+pr.Name+"="+pr.Value;                                }                                                            }                            tn=newTn;                        }                        else                        {                            newTn.Text="EmptyElement:"+pr.Name;                            if(pr.HasAttributes)                            {                                for(int i=0;i<pr.AttributeCount;i++)                                {                                    pr.MoveToAttribute(i);                                    newTn.Text=newTn.Text+","+pr.Name+"="+pr.Value;                                }                                tn.Nodes.Add(newTn);                            }                        }                        break;                    default:                        newTn.Text = pr.Value;                        tn.Nodes.Add(newTn);                        break;                }                newTn = new TreeNode();            }            treeView1.ExpandAll();            treeView1.Refresh();        } 

热点排行