java - 重写而不是附加到 XML 文件

标签 java xml

我使用下面的代码来写入 XML 文件,但每次运行此函数时,信息都会附加到 XML 文件中,而不是重写。

我应该更改什么才能重写文件而不是每次都附加信息?

这是函数:

public void write2file(LinkedList<Customer> customers, File ff) {
    try {

        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = documentBuilder.parse(ff);
        Element root = document.getDocumentElement();

        // Root Element
        Element rootElement = document.getDocumentElement();

        for (Customer i : customers) {
            // server elements
            Element new_marker = document.createElement("Marker");
            rootElement.appendChild(new_marker);

            Element name = document.createElement("title");
            name.appendChild(document.createTextNode(i.getTitle()));
            new_marker.appendChild(name);

            Element loc = document.createElement("site_location");
            loc.appendChild(document.createTextNode(i.getLocation()));
            new_marker.appendChild(loc);

            Element latitude = document.createElement("latitude");
            latitude.appendChild(document.createTextNode(i.getLatitude()));
            new_marker.appendChild(latitude);

            Element longitude = document.createElement("longitude");
            longitude.appendChild(document.createTextNode(i.getLongitude()));
            new_marker.appendChild(longitude);

            Element status = document.createElement("status");
            status.appendChild(document.createTextNode(i.getStatus()));
            new_marker.appendChild(status);

            root.appendChild(new_marker);
        }

        DOMSource source = new DOMSource(document);

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        StreamResult result = new StreamResult(ff);
        transformer.transform(source, result);

    } 
    catch (SAXException e) {
        e.printStackTrace();} 
    catch (IOException e) {
        e.printStackTrace();}
    catch (ParserConfigurationException pce) {
        pce.printStackTrace();}
    catch (TransformerException tfe) {
        tfe.printStackTrace();}
}

最佳答案

不要直接给出文件作为 StreamResult 的参数,而是尝试给出 FileOutputStream,它可以接受构造函数参数是否追加。

new StreamResult(new FileOutputStream(ff, false));

关于java - 重写而不是附加到 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20686800/

相关文章:

python - 单击后禁用按钮 - Odoo v8

Java和xpath - xHtml解析问题

java - MyBatis 查询中的参数未被替换

java - 在 Geotools 中构建 Shapefile 时遇到问题

java - getNodeValue() 有问题吗?

xml - XSD - 元素嵌套在同名元素中 - 是否合适?

c# - 合并xml文件

java - 构造时通过反射获取Java中的静态实例名称

java - 为什么我的应用程序没有进入我的 if 语句

java - 如何在 JBoss 7 中设置 EJB 方法的默认角色?