C# window 实现 xml文件 显示在treeView ,,后续还有其他操作....速度抢分...

ZhangNan20100811 2013-03-27 03:24:29
C# winform 实现 xml文件 显示在treeView

下面是 XML 文件:

<?xml version="1.0" encoding="utf-8" ?>
<inventory>
<info>
<id>1</id>
<cid>1</cid>
<name>a</name>
</info>
<info>
<id>2</id>
<cid>2</cid>
<name>b</name>
</info>
<info>
<id>3</id>
<cid>3</cid>
<name>c</name>
</info>
<info>
<id>4</id>
<cid>1</cid>
<name>d</name>
</info>
</inventory>


如果节点中的 cid = id ,,把 这个节点的值给它。

显示结果:
a
d
b
c

winform 窗体,不是web

节点差不多实现了,但就是怎样实现节点中的cid = id ,然后把这个节点值给它呢,郁闷坏了。。
请用递归实现,,能跑起来的,直接送100分。
...全文
225 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZhangNan20100811 2013-03-27
  • 打赏
  • 举报
回复
引用 6 楼 gxingmin 的回复:
运行结果
谢谢啦。
ZhangNan20100811 2013-03-27
  • 打赏
  • 举报
回复
谢谢大家了,除了那位说别人乱七八糟的,,敢问别人怎么看的懂。。 xml是固定的,只是先做一 个demo 我试试...
md5e 2013-03-27
  • 打赏
  • 举报
回复
xml是固定的吗,还是可以换种格式 如 <?xml version="1.0" encoding="utf-8" ?> <Tree> <TreeNode ID="G1000" Text="aa" SingleClickExpand="true" Icon="Report"> <TreeNode ID="G1001" Text="aa-1" NavigateUrl="aa-1.aspx" Icon="ApplicationFormAdd"> </TreeNode> <TreeNode ID="G1002" Text="aa-2" NavigateUrl="aa-2.aspx" Icon="ApplicationSideTree"> </TreeNode> </TreeNode> </Tree>
gxingmin 2013-03-27
  • 打赏
  • 举报
回复

运行结果
gxingmin 2013-03-27
  • 打赏
  • 举报
回复

        private void Form1_Load(object sender, EventArgs e)
        {
            System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Load(Application.StartupPath + "\\XMLFile1.xml");
            var els = doc.Root.Descendants("info").ToArray();

            LoadTreeNode(els, treeView1.Nodes,""); //加载树节点
           
        }


        //递归加载树节点
        private void LoadTreeNode(System.Xml.Linq.XElement[] els, TreeNodeCollection Nodes, string id)
        {
            if (id =="")
            {
                foreach (System.Xml.Linq.XElement es in els.Where(x => x.Element("id").Value.Equals(x.Element("cid").Value)))
                {
                    TreeNode node = Nodes.Add(es.Element("name").Value);
                    node.Tag = es.Element("id").Value;
                    LoadTreeNode(els, node.Nodes, es.Element("id").Value);
                }
            }
            else
            {
                foreach (System.Xml.Linq.XElement es in els.Where(x => x.Element("cid").Value.Equals(id) && !x.Element("id").Value.Equals(id)))
                {
                    TreeNode node = Nodes.Add(es.Element("name").Value);
                    node.Tag = es.Element("id").Value;
                    LoadTreeNode(els, node.Nodes, es.Element("id").Value);
                }
            }
        }
#blackheart 2013-03-27
  • 打赏
  • 举报
回复
引用 2 楼 ZhangNan20100811 的回复:
[quote=引用 1 楼 NianHui 的回复:] 啥乱七八糟的,问题都没描述清楚,
你没认真看...你是想来混分的吗?[/quote] 有个问问题的样子好吧,别人不欠你什么。
bdmh 2013-03-27
  • 打赏
  • 举报
回复
你循环读取xml节点时,是可以知道是否相等的,这时可以做你的操作啊,或者你可以用node的tag属性保存相关信息,这样可以随时通过访问tag来比较cid和id
ZhangNan20100811 2013-03-27
  • 打赏
  • 举报
回复
引用 1 楼 NianHui 的回复:
啥乱七八糟的,问题都没描述清楚,
你没认真看...你是想来混分的吗?
#blackheart 2013-03-27
  • 打赏
  • 举报
回复
啥乱七八糟的,问题都没描述清楚,

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧