jdom整个拷贝第三方传入的Element

今天在读取xml将里面内容拷贝到另一Document的时候出现下列问题: 

要将以下return下内容
<?xml version='1.0' encoding='GB18030'?>
<RETURN>
	<RetCode>响应码</RetCode>
	<RetMsg>响应码说明</RetMsg>
	<TrDate>处理日期</TrDate>
	<BatNo>批次号</BatNo>
	<Stat>处理状态</Stat>
	<TrStat>交易状态</TrStat>
	<BatStatDes>批次状态说明</BatStatDes>
</RETURN>

拷贝到以下body中
<?xml version="1.0" encoding='GB18030'?>
<TranData>
	<Head />
	<Body>
		<RetCode>响应码</RetCode>
		<RetMsg>响应码说明</RetMsg>
		<TrDate>处理日期</TrDate>
		<BatNo>批次号</BatNo>
		<Stat>处理状态</Stat>
		<TrStat>交易状态</TrStat>
		<BatStatDes>批次状态说明</BatStatDes>
	</Body>
</TranData>

用了
Element mOutBodyEle = new Element("Body");
mOutBodyEle.addContent(reDoc.getRootElement());

但是报了如下错误
Exception in thread "main" org.jdom.IllegalAddException: The element "RETURN" could not be added as the root of the document: The Content already has an existing parent document
	at org.jdom.ContentList.add(ContentList.java:205)
	at org.jdom.ContentList.add(ContentList.java:131)
	at java.util.AbstractList.add(AbstractList.java:89)
	at org.jdom.Element.addContent(Element.java:811)
	at com.guohr.net.CallWebsvcByFinance.batchStatusQuery(CallWebsvcByFinance.java:71)
	at com.guohr.net.CallWebsvcByFinance.main(CallWebsvcByFinance.java:131)

后来网上有人说用detach()方法,但是我用了之后拷贝的个数丢失了,后来采用了clone()方法后解决了这个问题,看来人家设计的时候都考虑好了,真的很强大啊
mOutBodyEle.addContent(reDoc.getRootElement().detach());
			for (int i = 0; i < reDoc.getRootElement().getContentSize(); i++) {
				mOutBodyEle.addContent((Element)(reDoc.getRootElement().getContent(i).clone()));
			}

你可能感兴趣的:(xml,document,element,jdom,getRootElement)