Java:附加到XML文件

时间:2017-11-10 16:04:21

标签: java netbeans

我有以下代码写入xml文件,我遇到的问题是它每次写入时都会创建一个新文件并覆盖保存在文件中的其他数据。我正在寻找一种可以附加到现有文件的解决方案。如何修改此代码以便每次都附加到文件而不是覆盖?此外,我正在使用netbeans IDE来运行此程序。

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element; 
import org.xml.sax.SAXException;
public class WriteXMLFile {

    public static void main() throws ParserConfigurationException,SAXException,Exception
    {
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();//
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();//

        Document doc = docBuilder.newDocument();// this is difrent

        Element rootElement = doc.createElement("Contacts");//
        doc.appendChild(rootElement); // this is difrent
        // staff elements

        Element Contact1 = doc.createElement("Contact1");
        rootElement.appendChild(Contact1);
        // set attribute to staff element

        Contact1.setAttribute("id","1");

        // firstname elements

        Element firstname = doc.createElement("Name");
        firstname.appendChild(doc.createTextNode(EmailFrame.name.getText()));
        Contact1.appendChild(firstname); 

        //Email Element
        Element email = doc.createElement("Email");
        email.appendChild(doc.createTextNode(EmailFrame.email.getText()));
        Contact1.appendChild(email); 

        // phone element
        Element phone= doc.createElement("Phone");
        phone.appendChild(doc.createTextNode(EmailFrame.phone.getText()));
        Contact1.appendChild(phone);
        //id element
        Element id = doc.createElement("ID");
        id.appendChild(doc.createTextNode(EmailFrame.id.getText()));
        Contact1.appendChild(id); 

        try{
            // write the content into xml file
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);


            StreamResult result = new StreamResult(new File("C:/Users/steve/Desktop/xmlemail/Email.xml"));

            transformer.transform(source, result);
            System.out.println("File saved!");
        }
        catch (TransformerException tfe) {
            tfe.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您需要做的是在写入之前首先将xml文件的内容读入对象,然后将新内容附加到对象,然后将对象写入xml文件

查看此资源以阅读它应该提供的xml文件

https://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/