• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

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

2008-09-25 03:33:25
<?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文档,请问下怎么生成树,请各位大哥大姐给出代码参考,问题解决马上结账
...全文
112 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
2008-09-26
问题自己昨天已经解决!
回复
XmlDocument读取了xml文件后就是树形结构。用递归就可以了。
回复
slimfeng 2008-09-26
我来给你解答吧

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();
}

其实大家不是不给你解答,是因为这个问题不难,好好看看msdn就可搞定
回复
2008-09-25
怎么没有人知道啊,
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2008-09-25 03:33
社区公告

让您成为最强悍的C#开发者