| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1513 人关注过本帖
标题:头一回遇到一个很棘手的问题,在这里向大家请教一番
只看楼主 加入收藏
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
如果没有人能帮我解决,那问题就得搁置到暑假了

思考赐予新生,时间在于定义
2014-06-12 18:21
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
楼主还没解决 会的帮下 我来加分给帮助者
2014-06-12 18:24
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用tlliqi在2014-6-12 18:24:30的发言:

楼主还没解决 会的帮下 我来加分给帮助者

好感动,谢谢小t

主要是我现在没时间弄这个,又要复习4级考试,又要期末考试,所以腾不出时间在这里展开讨论

思考赐予新生,时间在于定义
2014-06-12 19:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
反正不急,慢慢等,多发几个红贴。

授人以渔,不授人以鱼。
2014-06-12 20:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这是用C#写的,跟你前面的方法一样:

程序代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace test___XML
{
    class Program
    {
        static void Main(String[] args)
        {
            XmlTextWriter writer = new XmlTextWriter("Tree.xml", null);
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 3;
            writer.WriteStartDocument();
            writer.WriteComment("Created by TonyDeng @ " + DateTime.Now.ToString());
            writer.WriteStartElement("Root");

            writer.WriteStartElement("Node11");
            writer.WriteAttributeString("id", "3");

            writer.WriteStartElement("LNode21");
            writer.WriteAttributeString("id", "2");

            writer.WriteStartElement("LNode31");
            writer.WriteAttributeString("id", "7");
            writer.WriteEndElement();                       // 关闭LNode31
            writer.WriteStartElement("RNode32");
            writer.WriteAttributeString("id", "6");
            writer.WriteEndElement();                       // 关闭LNode31

            writer.WriteEndElement();                       // 关闭LNode21
            writer.WriteStartElement("RNode22");
            writer.WriteAttributeString("id", "5");
            writer.WriteEndElement();

            writer.WriteEndElement();                       // 关闭Node11
           
            writer.WriteEndElement();                       // 关闭Root
           
            writer.Close();
        }
    }
}


输出的XML文档:
程序代码:
<?xml version="1.0"?>
<!--Created by TonyDeng @ 2014/6/12 21:38:14-->
<Root>
   <Node11 id="3">
      <LNode21 id="2">
         <LNode31 id="7" />
         <RNode32 id="6" />
      </LNode21>
      <RNode22 id="5" />
   </Node11>
</Root>
收到的鲜花
  • tlliqi2014-06-13 21:06 送鲜花  40朵   附言:加分

授人以渔,不授人以鱼。
2014-06-12 21:39
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:10 
回复 25 楼 TonyDeng
TD这样的话已经把XML文件已经固定死了,如果在开发过程中利用XML进行菜单项的配置或其它配置,这样写太麻烦了,我前段时间做了一个是利用TreeList控件做的,只是简单的绑定,命名的话也没有那么多要求。就是将节点进行遍历读取到datatable中,然后进行绑定,设计的时候应该采用递归的思想进行处理,但是TreeList要求具有ID、ParentID的对应关系,所以在设计递归的时候就比较困难了,然后就没做成,最后采用了原始的遍历读取,然后处理。
      对于你这个命名要求,有两个方面要注意,第一个是所在的层数,第二个是所在该层中的ID;突然有个想法,你可以设计算法进行二叉树的遍历,每读取一个节点就进行写入XML中一个节点,然后接着读取左节点,然后再在读取右节点,在读取的过程中记录下所在的层数和该层节点的ID,每次读取进行叠加,右节点读取后将根节点赋给做节点,同时进行左右节点的判断,然后再将根节点赋给上一个根节点的右节点。这样是不是可以形成递归呢?我也不知道,只是想法。
收到的鲜花
  • tlliqi2014-06-13 21:06 送鲜花  20朵   附言:加分

Maybe
2014-06-13 18:55
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
突然觉得说的让人难以理解,胡言乱语了

Maybe
2014-06-13 18:57
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:10 

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2014-06-13 20:35
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用邓士林在2014-6-13 18:55:47的发言:

TD这样的话已经把XML文件已经固定死了,如果在开发过程中利用XML进行菜单项的配置或其它配置,这样写太麻烦了,我前段时间做了一个是利用TreeList控件做的,只是简单的绑定,命名的话也没有那么多要求。就是将节点进行遍历读取到datatable中,然后进行绑定,设计的时候应该采用递归的思想进行处理,但是TreeList要求具有ID、ParentID的对应关系,所以在设计递归的时候就比较困难了,然后就没做成,最后采用了原始的遍历读取,然后处理。
      对于你这个命名要求,有两个方面要注意,第一个是所在的层数,第二个是所在该层中的ID;突然有个想法,你可以设计算法进行二叉树的遍历,每读取一个节点就进行写入XML中一个节点,然后接着读取左节点,然后再在读取右节点,在读取的过程中记录下所在的层数和该层节点的ID,每次读取进行叠加,右节点读取后将根节点赋给做节点,同时进行左右节点的判断,然后再将根节点赋给上一个根节点的右节点。这样是不是可以形成递归呢?我也不知道,只是想法。

不错,我已经这样思考过了,但是我无法用程序实现。
也许是我当时心急烦躁,所以想不出思路。我也觉得像你这样的思路应该是可行的,但我一直写不出代码。

T版的代码是根据固定的数据来生成一个XML,这个我在学习XML的过程中就碰过了。
但是如果我输入的数据是一组随机数,然后将这组随机数进行二叉排序,然后再生成XML,这就要有一个固定的思路来依次提取结点中的数据,不然每一次输入的
数据不一样,就会有不同的二叉排序法,那样岂不是要修改程序来适应这组数据?

我的想法和你的一样,只是我还没有想出怎么个提取结点,才能保证生成的XML是正确的。

思考赐予新生,时间在于定义
2014-06-13 22:49
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
等我明天考完四级,我再另外开一帖出来讨论一下

思考赐予新生,时间在于定义
2014-06-13 23:02
快速回复:头一回遇到一个很棘手的问题,在这里向大家请教一番
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032875 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved