import java.util.*;class Category{
String nodeid,nodename,haschild,parentid;
public Category(String nodeid,String nodename,String haschild,String parentid){
this.nodeid=nodeid;
this.nodename=nodename;
this.haschild=haschild;
this.parentid=parentid;
System.out.println(nodeid+","+nodename+","+haschild+","+parentid);
}
public String toString(){
return nodeid+","+nodename+","+haschild+","+parentid;
}
}public class TestTreeNode {
public static String createTree(List data){
StringBuffer buf=new StringBuffer();
buf.append("<Categories>\n");
List root=getRootNode(data);
Iterator it=root.iterator();
while(it.hasNext()){
Category temp=(Category)it.next();
System.out.println("temp--"+temp);
writeNode(temp,data,buf,1);
}

buf.append("</Categories>\n");
return buf.toString();
}

public static List getRootNode(List data){
List root=new ArrayList();
Iterator it=data.iterator();
while(it.hasNext()){
Category temp=(Category)it.next();
if (temp.parentid==null){
System.out.println("root:"+temp);
root.add(temp);
}
}
return root;
}

public static void writeNode(Category node,List data,StringBuffer buf,int deep){
for (int i=0;i<deep;i++){
buf.append("  ");
}
buf.append("<Category id=\"");
buf.append(node.nodeid);
buf.append(" name=\"");
buf.append(node.nodename);
buf.append("\">\n");

Iterator it=data.iterator();
while(it.hasNext()){
Category temp=(Category)it.next();
if (node.nodeid.equals(temp.parentid)){
writeNode(temp,data,buf,deep+1);
}
}

for (int i=0;i<deep;i++){
buf.append("  ");
}
buf.append("</Category>\n"); }

public static void main(String[] args){
List test=new ArrayList();
Random random=new Random();
int r1=random.nextInt(10)+1;
for (int i=0;i<r1;i++){
String s1=String.valueOf(i);
test.add(new Category(s1,"node "+s1,null,null));
int r2=random.nextInt(10);
for (int j=0;j<r2;j++){
String s2=s1+"."+String.valueOf(j);
test.add(new Category(s2,
"node "+s2,null,s1));
int r3=random.nextInt(10);
for (int k=0;k<r3;k++){
String s3=s2+"."+String.valueOf(k);
test.add(new Category(s3,
"node "+s3,null,s2));
}
}
} System.out.println(createTree(test));
}
}

解决方案 »

  1.   

    楼上,代码自然是可行的了,不过我要根据这个思想改造成jdom生成xml的
      

  2.   

    to hbwhwang(catmiw的ID已经停用,现在用这个)你的程序很好,可是我想要用jdom写的xml,生成xml文件。我老是改不出来啊
      

  3.   

    不是我不想帮你写。是要帮你写的话,我又要把JDOM翻出来,好久没用过JDOM了,现在用xerces
      

  4.   

    用这个的方法我已经实现了.可是还是不知道用jdom的怎么实现呢.