根据Java文档,
使用cloneNode方法。
摘要:
public Node cloneNode(boolean deep)返回此节点的副本,即用作节点的通用副本构造函数。复制节点没有父节点。(parentNode为null。)。
克隆元素会复制所有属性及其值,包括XML处理器生成的代表默认属性的属性,但是此方法不会复制它包含的任何文本,除非它是深度克隆,因为该文本包含在子Text节点中。直接克隆属性(而不是作为元素克隆操作的一部分进行克隆)将返回指定的属性(指定为true)。克隆任何其他类型的节点只会返回该节点的副本。
请注意,克隆不可变的子树会导致可变的副本,但是EntityReference克隆的子级是readonly。此外,还指定了未指定Attr节点的克隆。并且,克隆document,documentType,Entity和Notation节点取决于实现。
编辑:
import java.io.*;import javax.xml.parsers.*;import org.w3c.dom.*;import org.xml.sax.*;import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult;public class Test{ static public void main(String[] arg) throws Exception{ documentBuilderFactory factory = documentBuilderFactory.newInstance(); documentBuilder builder = factory.newdocumentBuilder(); document doc = builder.parse("foo.xml"); TransformerFactory tranFactory = TransformerFactory.newInstance(); Transformer aTransformer = tranFactory.newTransformer(); NodeList list = doc.getFirstChild().getChildNodes(); for (int i=0; i<list.getLength(); i++){ Node element = list.item(i).cloneNode(true); if(element.hasChildNodes()){ Source src = new DOMSource(element); FileOutputStream fs=new FileOutputStream("k" + i + ".xml"); Result dest = new StreamResult(fs); aTransformer.transform(src, dest); fs.close(); } } }}


