id parentid name
a1 0        中国
a2 a1       北京
a3 a2       海淀区
a4 a2       东城区
a5 a1       上海
a6 a5       黄浦区
a7 a5       浦东新区
以上数据可以存放到list中我想要的xml:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Item id="a1" name="中国">
  <Item id="a2" name="北京">
    <Item id="a3" name="海淀区"></item>
    <Item id="a4" name="东城区"></item>
  </item>
  <Item id="a5" name="上海">
    <Item id="a6" name="黄浦区"></item>
    <Item id="a7" name="浦东新区"></item>
  </item>
</item>用递归方式如何做?如有性能要求,怎么做更效率??

解决方案 »

  1.   

    不用 我想可以用StringBuffer append就可以生产一个的xml样式的字符串
      

  2.   

    北京游戏公司急聘java游戏开发师职位描述
    1、拥有扎实的JAVA基础,算法基础。
    2、熟悉JAVA多线程编程,JAVA网络编程,并有一年以上的全职编程经验。
    3、很好的逻辑思维能力与想像力。
    4、熟悉MYSQL数据库,熟练使用SQL语句。
    5、勤奋好学,对新知识掌握速度快。
    6、踏实肯干,能够很好的进行团队合作,和任务多时的加班。
    7、热爱游戏,并希望把游戏编程当成自己的事业。
    有意者可投简历至:Email: [email protected]
      

  3.   

    可以,直接产生xml内容字符串写入文件。
    也可以用dom创建document;用xmlwriter写成文件
      

  4.   

    首先 循环list 对象 得到parentid 是a1 记住下标 进行分别循环。就可以了,
      

  5.   

    public class Test
    {    private String id;    private String name;    private String pid;    public Test()
        {
        }    public Test(String id, String name, String pid)
        {
            this.id = id;
            this.name = name;
            this.pid = pid;
        }    public String getPid()
        {
            return pid;
        }    public void setPid(String pid)
        {
            this.pid = pid;
        }    public String getId()
        {
            return id;
        }    public void setId(String id)
        {
            this.id = id;
        }    private static StringBuffer sbuf = new StringBuffer();    /**
         * 测试方法
         */
        public static void main(String[] args)
        {
            Test[] users = new Test[]{
                    new Test("a1", "中国", null),
                    new Test("a2", "北京", "a1"), 
                    new Test("a5", "上海", "a1"),
                    new Test("a3", "海淀区", "a2"), 
                    new Test("a4", "东城区", "a2"),
                    new Test("a6", "黄浦区", "a5"), 
                    new Test("a7", "浦东新区", "a5")};
            System.out.println(new Test().toXML(users));
        }    public String toXML(Test[] t)//构造树
        {
            String id = "";        for (int i = 0; i < t.length; i++)
            {
                if (null == t[i].getPid())
                {
                    sbuf.append("<item text=\"" + t[i].getId() + "\" id=\""
                            + t[i].getName() + "\">\n");
                    id = t[i].getId();
                }        }
            forSort(t, id);
            sbuf.append("</item>");
            return sbuf.toString();
        }    public String getName()
        {
            return name;
        }    public void setName(String name)
        {
            this.name = name;
        }    public String forSort(Test[] t, String id)//递归方法
        {
            for (int i = 0; i < t.length; i++)
            {
                if (null != t[i].pid)
                {
                    if (id == t[i].getPid())
                    {
                        sbuf.append("<item text=\"" + t[i].getId() + "\" id=\""
                                + t[i].getName() + "\">\n");
                        forSort(t, t[i].getId());
                        sbuf.append("</item>\n");
                    }
                }
            }
            return sbuf.toString();
        }
     }以上是递归方式获取xml格式string字符串
    有没有更效率的??
      

  6.   

    为什么用递归?直接用while或者for循环效率是否能更好一些?反正list里面对应的东东很简单,直接循环我觉得相应的
    创建 销毁对象要比递归好像少一些不对的话请拍  别爆粗口 \(^o^)/~
      

  7.   

    http://blog.csdn.net/xuhuanchao/archive/2010/02/06/5293625.aspx
      

  8.   

    递归方法用自己的就可以了
    建议在数据库表中建立一个排序字段,利用这个字段一次就可以生成你想用的数据层级
    不懂,在google上收下。
      

  9.   

    谢谢7楼vinceyu的分享!帮助我解决问题了。