[/code]今天在读取xml将里面内容拷贝到另一Document的时候出现下列问题:
要将以下return下内容
[code="java"]
<?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文件内容拷贝过程中遇到的问题及解决方案。尝试将一个XML元素拷贝到另一个文档时,遇到了元素已存在于文档中的错误。通过使用detach()方法尝试解决但导致内容丢失,最终采用clone()方法成功完成拷贝。
330

被折叠的 条评论
为什么被折叠?



