Hallo,
ich verwende XML Dateien als Konfigurationsdateien in Java
Ich öffne die Datei am Anfang mit
Danach ändere ich parameter in der XML Datei:
ich verwende DocumentBuilderFactory:
Das Problem ist nun, dass wenn kein Festplattenspeicher mehr verfügbar ist, der Inhalt der xml Datei verschwindet und nur noch eine leere Datei übrig bleibt. Dies finde ich überraschend, da die Datei ja schon existiert und die Grösse sich normalerweise nicht ändert. Gibt es eine elegante Lösung das Problem zu vermeiden?
Vielen Dank
Klaus
ich verwende XML Dateien als Konfigurationsdateien in Java
Ich öffne die Datei am Anfang mit
Java:
data =xmlFuncObj.getDataFromFile(filepath+"/settings/"+customer+".xml");
Danach ändere ich parameter in der XML Datei:
Java:
xmlFuncObj.writePositionsToFile(filePositions, filepath+"/settings/"+customer+".xml");
ich verwende DocumentBuilderFactory:
Java:
public boolean writePositionsToFile(int[] positions, String fileName) throws ParserConfigurationException, SAXException, IOException, TransformerConfigurationException, TransformerException
{
File file = new File(fileName);
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (file);
// extract service settings
NodeList listOfServices = doc.getElementsByTagName("service");
int totalServices = listOfServices.getLength();
if(totalServices !=positions.length)
{
return false;
}
for(int s=0; s<listOfServices.getLength() ; s++){
Node serviceNode = listOfServices.item(s);
if(serviceNode.getNodeType() == Node.ELEMENT_NODE){
Element serviceElement = (Element)serviceNode;
//-------
NodeList servicePosition = serviceElement.getElementsByTagName("position");
Element positionElement = (Element)servicePosition.item(0);
NodeList textPositionList = positionElement.getChildNodes();
((Node)textPositionList.item(0)).setNodeValue(Integer.toString(positions[s]));
//-------/
}//end of if clause
}//end of for loop with s var
// Prepare the DOM document for writing
Source source = new DOMSource(doc);
// Prepare the output file
Result result = new StreamResult(file);
// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);
return true;
}
Vielen Dank
Klaus
Zuletzt bearbeitet von einem Moderator: