2013-05-18 5 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)); 

По умолчанию второй параметр является ложным. True означает, что он будет прикреплен к файлу, false означает, что он перезапишет его.

Смежные вопросы