Dom4j中"The Node already has an existing parent"问题

常常需要在两个Document中互相复制Element,可是Dom4j中使用Element.add(Elemnet)方法就会出现出题的错误:

而应用AppendContext()方法,只能将目标元素的内容复制过来,不能将整个元素复制

通过看AbstractElement.java的源码得到解决办法是:调用Element的clone()方法。

root.add((Element) company.clone());

 


public Document createXMLDocument(){
    Document doc = null;
    doc = DocumentHelper.createDocument();
    Element root = doc.addElement("class");
    Element company = root.addElement("company");
    Element person = company.addElement("person");
    person.addAttribute("id","11");
    person.addElement("name").setText("Jack Chen");
    person.addElement("sex").setText("男");
    person.addElement("date").setText("2001-04-01");
    person.addElement("email").setText("chen@163.com");
    person.addElement("QQ").setText("2366001");
    root.add((Element) company.clone());
    return doc;
}

 

http://hi.baidu.com/yangtb/blog/item/ca48e9ea2c3e4ed0d439c995.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值