可以使用Java的DOM解析器来实现将XML记录从一个文件复制到另一个文件的操作。下面是一个实现的示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XMLCopy {
public static void main(String[] args) {
try {
// 创建DOM解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 创建DOM解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 加载要读取的XML文件
File inputFile = new File("input.xml");
FileInputStream inputStream = new FileInputStream(inputFile);
Document inputDoc = builder.parse(inputStream);
// 获取XML根节点
Element root = inputDoc.getDocumentElement();
// 创建要写入的XML文件
File outputFile = new File("output.xml");
FileOutputStream outputStream = new FileOutputStream(outputFile);
// 复制根节点和子节点到输出文件
copyNode(root, outputStream);
// 关闭输入输出流
inputStream.close();
outputStream.close();
System.out.println("XML记录已成功复制到另一个文件!");
} catch (Exception e) {
e.printStackTrace();
}
}
private static void copyNode(Node node, FileOutputStream outputStream) throws Exception {
// 创建DOM文档
Document outputDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
// 克隆节点
Node copiedNode = outputDoc.importNode(node, true);
// 添加节点到输出文档
outputDoc.appendChild(copiedNode);
// 将输出文档写入文件
javax.xml.transform.Transformer transformer =
javax.xml.transform.TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");
transformer.transform(
new javax.xml.transform.dom.DOMSource(outputDoc),
new javax.xml.transform.stream.StreamResult(outputStream)
);
// 递归复制子节点
NodeList childNodes = node.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node childNode = childNodes.item(i);
copyNode(childNode, outputStream);
}
}
}
以上代码通过DOM解析器将输入的XML文件逐行读取,并使用copyNode
方法将节点及其子节点复制到输出文件中。最后,使用Transformer
类将输出的DOM文档写入文件中。
请注意,以上示例中的代码仅复制XML记录,未对XML的内容进行任何处理。如有需要,可以根据具体业务需求自行扩展。
领取专属 10元无门槛券
手把手带您无忧上云