Я использую следующий код для записи в файл 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();}
}
Вы пытались использовать новый объект File в «new StreamResult (ff)», а затем удалить старый файл? Это не совсем то, что вы хотите, но .. – oli206
Да, но я почему-то добавил только последний узел из связанного списка. –
Не уверен, что он может иметь какое-то отношение к проблеме, но вы добавляете объект new_maker дважды в цикл for. Один для «корневого» объекта, а затем снова к объекту «rootElement», но они одинаковы. – oli206