Java递归算法给基于dom4j创建一个完全相同的节点(包括属性、子节点和文本等)

本文介绍在处理xml文档时遇到的问题,如何使用递归算法创建与原始节点完全相同的副本,包括属性、子节点和文本。讨论了两种方法,一种涉及多次遍历,另一种采用递归算法实现,虽然递归消耗内存但相对简单,适用于创建相同元素。提供了初步实现的递归方法,供参考并欢迎交流改进。
摘要由CSDN通过智能技术生成

在使用dom4j的时候,如果将xml的节点遍历放在集合里,然后在xml文档中某处插入某个节点的时候,如果将list集合的节点取出来,是没有办法直接用add(Element)插入的,每次都是到这个点就自己停止了,也不报错.
几个探讨研究了一下,有一种方法:

就是将从list集合里取出来的,先通过Document转换,再获取Element根元素加进去.

这种方法,非常的恶心,又要遍历集合了.
还有一种方法:

xml可以插入一个新创建的元素(Element);那就创建一个新的元素放进去.

根据第二种方法,我们就要从list集合里取出来一个节点,然后原模原样的创建一个新的,虽然这个也不是很简单,但是这也方便后期做一个工具类.

之所以选择递归的算法,是因为递归算法代码不是很多很复杂.但是递归很消耗内存.具体原因,网上一大堆大神都说的很清楚了.但是对于原模原样的跟着某个元素创建一模一样的元素,对内存的消耗还好一点.当然,特殊情况除外.

因为也是刚写这个递归的方法,也没有优化,现在写在这里,可以参考参考,记录一下,方便以后使用.当然,也希望各大牛提意见,小弟定当感谢:

/**
     * 递归创建一个需要复制的Element元素
     * 为了方便在xml中某个位置插入某个元素
     * @param element 需要复制的元素
     * @return 按照指定元素创建好的临时元素,可以插入到指定的xml文档位置中
     */
    private E
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值