Hallo,
seit kurzem bin ich daran eine XML-Datei zu erstellen, welche einen Fuhrpark enthält.
Bisher sieht die XML-Datei so aus:
Jetzt würde ich gerne ein Auto über die ID löschen.
Hierzu habe ich den folgende Zeilen genutzt:
Wenn ich das jedoch ausführe, löscht er mir alle Autos, was nicht Ziel der Übung war
Ich gehe mal davon aus, dass es mit der "node = ele.getParentNode()" zusammenhängt, ich weiß aber leider auch nicht, was ich anders machen kann, damit es funktioniert.
Was ich natürlich nicht möchte, wäre es die XML-Datei in Auto und Motorräder zu splitten.
Hat jemand in der Community eine Idee, wie ich das umsetzen kann?
Gruß
Dommschwenker
seit kurzem bin ich daran eine XML-Datei zu erstellen, welche einen Fuhrpark enthält.
Bisher sieht die XML-Datei so aus:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fuhrpark>
<autos>
<auto>
<id>1</id>
<hersteller>Audi</hersteller>
<typ>A1</typ>
</auto>
<auto>
<id>2</id>
<hersteller>BMW</hersteller>
<typ>1er</typ>
</auto>
<auto>
<id>3</id>
<hersteller>Mercedes</hersteller>
<typ>A-Klasse</typ>
</auto>
</autos>
<motorraeder>
<motorrad>
<id>1</id>
<hersteller>BMW</hersteller>
<typ>S 1000 RR</typ>
</motorrad>
<motorrad>
<id>2</id>
<hersteller>Harley</hersteller>
<typ>Davidson</typ>
</motorrad>
</motorraeder>
</fuhrpark>
Jetzt würde ich gerne ein Auto über die ID löschen.
Hierzu habe ich den folgende Zeilen genutzt:
Java:
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new File("database.xml"));
String objects = "auto";
String id = "2";
NodeList nList = doc.getElementsByTagName(objects);
for (int index = 0; index < nList.getLength(); index++) {
Node node = nList.item(index);
Element ele = (Element) node;
if (ele.getElementsByTagName("id").item(0).getTextContent().equalsIgnoreCase(id)) {
node = ele.getParentNode();
doc.getDocumentElement().removeChild(node);
}
}
doc.normalize();
TransformerFactory traFactory = TransformerFactory.newInstance();
Transformer tra = traFactory.newTransformer();
DOMSource dom = new DOMSource(doc);
StreamResult res = new StreamResult(new File("database.xml"));
tra.transform(dom, res);
} catch (ParserConfigurationException e) {
JOptionPane.showMessageDialog(null, "Fehlermeldung:\n\n" + e, "Titel-Fehlermeldung", JOptionPane.ERROR_MESSAGE);
} catch (TransformerException e) {
JOptionPane.showMessageDialog(null, "Fehlermeldung:\n\n" + e, "Titel-Fehlermeldung", JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Fehlermeldung:\n\n" + e, "Titel-Fehlermeldung", JOptionPane.ERROR_MESSAGE);
return null;
}
Wenn ich das jedoch ausführe, löscht er mir alle Autos, was nicht Ziel der Übung war
Ich gehe mal davon aus, dass es mit der "node = ele.getParentNode()" zusammenhängt, ich weiß aber leider auch nicht, was ich anders machen kann, damit es funktioniert.
Was ich natürlich nicht möchte, wäre es die XML-Datei in Auto und Motorräder zu splitten.
Hat jemand in der Community eine Idee, wie ich das umsetzen kann?
Gruß
Dommschwenker