java读取xml文件内容,转为ztree的形式

@ResponseBody
    @RequestMapping("/getXmlNodes")
    public List<ZTreeNode> getXmlNodes(Long versionId){
        try {
            File file = objectFileService.getFileByVersionId(versionId);
            String s;
            InputStreamReader in = new InputStreamReader(new FileInputStream(file), "UTF-8");
            BufferedReader reader = new BufferedReader(in);
            StringBuffer content = new StringBuffer();
            while ((s = reader.readLine()) != null) {
                content = content.append(s + "\r\n");
            }
            if (null != reader) {
                reader.close();
            }
            JSONObject jsonObject = XMLUtil.xml2JSONObject(content.toString());
            List<ZTreeNode> zTreeNodeList=new ArrayList<>();
            Integer parent = null;
            test(jsonObject,1, parent, zTreeNodeList, null);
            return zTreeNodeList;
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        return null;
    }

    public void test(Object o,Integer index, Integer parent, List<ZTreeNode> nodes, String xkey) {
        if (o instanceof JSONObject) {
            Iterator<String> it = ((JSONObject) o).keySet().iterator();
            while (it.hasNext()) {
                String key = it.next();
                if (((JSONObject) o).get(key) instanceof JSONArray
                        || ((JSONObject) o).get(key) instanceof JSONObject) {
                    int nodeId=nodes.size() + 1;
                    if (!(((JSONObject) o).get(key) instanceof JSONArray)) {
                        nodes.add(new ZTreeNode(String.valueOf(nodeId), String.valueOf(parent), key));
                        parent = nodeId;
                    }
                    test(((JSONObject) o).get(key),nodeId, parent, nodes, ((JSONObject) o).get(key) instanceof JSONArray ? key : null);
                }else {
                    Map<String, Object> map = nodes.get(index-1).getAttrMap();
                    if(map==null){
                        map=new HashMap<>();
                    }
                    map.put(key,((JSONObject) o).get(key));
                    nodes.get(index-1).setAttrMap(map);
                }
            }
        } else if (o instanceof JSONArray) {
            JSONArray ja = (JSONArray) o;
            for (Object obj : ja) {
                int nodeId = nodes.size() + 1;
                nodes.add(new ZTreeNode(String.valueOf(nodeId), String.valueOf(parent), xkey));
                test(obj,nodeId, nodeId, nodes, xkey);
            }
        }
    }

上述代码有漏洞,看最新的博客文章(修复漏洞):

java将xml文件内容与ztree树形结构互转_欧菲丽的博客-CSDN博客用java实现的读取xml文件内容,并转换成ZTree树形结构,也可以将ztree树形结构转换为xml格式保存到文件中,个人创作不易,感谢大家支持具体效果图:转为ztree树:有问题的话欢迎指出讨论!java将xml文件内容与ztree树形结构互转.zip-互联网文档类资源-CSDN下载https://download.csdn.net/download/weixin_37576193/72081394...https://blog.csdn.net/weixin_37576193/article/details/122209013

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好,我理解您的问题是想要使用Javaztree实现两棵树之间的相互移动。 首先,您需要引入ztreeJavaScript 和 CSS 文件。 然后,您需要在页面中创建两个 ztree,分别表示两棵树。可以通过 AJAX 加载树节点数据,也可以在页面中直接定义节点数据。 接着,您需要为两个 ztree 绑定拖拽事件。在拖拽结束后,通过获取被拖拽节点的信息,将节点从一棵树中移除,并添加到另一棵树中。 以下是一个简单的示例代码: ```javascript // 定义 ztree 的配置 var setting = { view: { dblClickExpand: false }, data: { key: { name: "nodeName" }, simpleData: { enable: true, idKey: "nodeId", pIdKey: "parentNode", rootPId: null } }, callback: { onDrop: function(event, treeId, treeNodes, targetNode, moveType) { // 获取被拖拽节点的信息 var node = treeNodes[0]; var nodeId = node.nodeId; var nodeName = node.nodeName; var parentNode = node.parentNode; // 将节点从一棵树中移除 var treeObj = $.fn.zTree.getZTreeObj(treeId); treeObj.removeNode(node); // 添加节点到另一棵树中 var targetTreeObj = $.fn.zTree.getZTreeObj(targetNode.treeId); var targetNodeObj = targetTreeObj.getNodeByTId(targetNode.tId); targetTreeObj.addNodes(targetNodeObj, { nodeId: nodeId, nodeName: nodeName, parentNode: targetNodeObj.nodeId }); } } }; // 创建两个 ztree var tree1Nodes = [ {nodeId: 1, nodeName: "节点1", parentNode: null}, {nodeId: 2, nodeName: "节点2", parentNode: 1}, {nodeId: 3, nodeName: "节点3", parentNode: 1} ]; var tree2Nodes = [ {nodeId: 4, nodeName: "节点4", parentNode: null}, {nodeId: 5, nodeName: "节点5", parentNode: 4}, {nodeId: 6, nodeName: "节点6", parentNode: 4} ]; $.fn.zTree.init($("#tree1"), setting, tree1Nodes); $.fn.zTree.init($("#tree2"), setting, tree2Nodes); ``` 在上面的示例代码中,我们定义了一个名为 `setting` 的 ztree 配置对象,并将其应用到两个 ztree 上。在 `onDrop` 回调函数中,我们获取被拖拽节点的信息,并将其移动到目标树中。 希望这个示例可以帮助到您。如果您有任何问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TNT报社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值