2013-05-18 167 views
2

我正在將一些數據寫入XML文件。附加到XML文件

下面是代碼:

try { 

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

    // root elements 
    Document doc = docBuilder.newDocument(); 
    Element rootElement = doc.createElement("company"); 
    doc.appendChild(rootElement); 

    // staff elements 
    Element staff = doc.createElement("Staff"); 
    rootElement.appendChild(staff); 

    // set attribute to staff element 
    Attr attr = doc.createAttribute("id"); 
    attr.setValue("1"); 
    staff.setAttributeNode(attr); 

    // shorten way 
    // staff.setAttribute("id", "1"); 

    // firstname elements 
    Element firstname = doc.createElement("firstname"); 
    firstname.appendChild(doc.createTextNode("yong")); 
    staff.appendChild(firstname); 

    // lastname elements 
    Element lastname = doc.createElement("lastname"); 
    lastname.appendChild(doc.createTextNode("mook kim")); 
    staff.appendChild(lastname); 

    // nickname elements 
    Element nickname = doc.createElement("nickname"); 
    nickname.appendChild(doc.createTextNode("mkyong")); 
    staff.appendChild(nickname); 

    // salary elements 
    Element salary = doc.createElement("salary"); 
    salary.appendChild(doc.createTextNode("100000")); 
    staff.appendChild(salary); 

    // 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("file.xml")); 

    // Output to console for testing 
    // StreamResult result = new StreamResult(System.out); 

    transformer.transform(source, result); 

    System.out.println("File saved!"); 

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

此代碼將XML數據寫入到 「file.xml」。如果我已經有一個「file.xml」文件,那麼將XML數據附加到文件的最佳方式是什麼?我是否需要重寫上面的全部代碼,還是很容易調整代碼?

+1

看看這裏:http://stackoverflow.com/questions/883987/java-appending-xml-docs-to-existing-docs –

回答

0

是的 - 你正在處理DOM,所以你必須把整個文件放在內存中。另一種選擇是StAX。

0
StreamResult result = new StreamResult(new File("file.xml")); 

檢查這條線。 用這個替換上面的行。

StreamResult result = new StreamResult(new FileOutputStream("file.xml", true)); 

默認情況下,第二個參數爲false。 True表示它將追加到文件,false表示它將覆蓋它。