注册 登录
查看: 1174|回复: 0
打印 上一主题 下一主题

解析xml文件:要求先读入一个xml文件,然后解析,然后排序,排序是按两种规则

[复制链接]

该用户从未签到

3524

主题

3538

帖子

67万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
673178
QQ
跳转到指定楼层
楼主
发表于 2016-7-20 08:23:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
要求先读入一个xml文件,然后解析,然后排序,排序是按两种规则,一是子树大小,这个大小是计算包括子树的根节点在内的节点的个数,把小的子树排在前面,大的排在后面。当子树大小一样的时候,再按字母顺序排序,a<b<c<d这样的,也可以根据ASCII排序,最后输出排好序的xml文件。
后来导师又要求吧读入的子树当一个string,还是先比大小,大小一样再按顺序输出。


这是导师给的伪代码,就是先按大小比,一样大小的再比字母顺序
static class nodeInf implements Comparable<nodeInf> {
        int size;
        String trav;
        public int compareTo(nodeInf e1){
            if((this.size-e1.size) == 0) return(this.trav.compareTo(e1.trav));
            else return(this.size - e1.size);
        }
     }

然后又给了个递归的方法,每个子树都返回一个nodeInf的object,这个对象包含了大小和遍历出来的string
  public static nodeInf getInf(Node u) {
.
.
.
.
        for(int i=0; i<nlist.getLength(); i++) {
            if(typeName[nlist.item(i).getNodeType()] == "Element") {
                cArray[j] = getInf(nlist.item(i));
                res.size = res.size + cArray[j].size;
                j = j+1;
            }
        }

        Arrays.sort(cArray,0,j);
        for(int i=0; i<j; i++) res.trav = res.trav + cArray.trav;
        res.trav = res.trav + "</" + nname + ">";
        return(res);
     }






运行截图:






下载地址:

游客,本付费内容需要支付 10金币 才能浏览支付






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
java无忧网(http://www.javawyw.com),专业提供Java大作业,小作业,课程设计,毕业设计源码,答辩辅导,作业排错,bug修复,专业解答,远程部署运行项目等服务
本网站所有源码,保证能运行!
QQ:1399491757
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回顶部