首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Java编程将xml记录从一个xml文件复制到另一个文件?

可以使用Java的DOM解析器来实现将XML记录从一个文件复制到另一个文件的操作。下面是一个实现的示例代码:

代码语言:txt
复制
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的内容进行任何处理。如有需要,可以根据具体业务需求自行扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券