# Probleme bei der Formatierung beim Einfügen und löschen über DOM



## navino (19. Apr 2018)

Entweder rückt er nicht ordentlich ein oder es bleiben Leerzeilen stehen


Hier mein code:

```
String filePath = MainFrame.datenpfad + "\\kategorien.xml";
       File xmlFile = new File(filePath);
       DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
       DocumentBuilder dBuilder;
       try {
           dBuilder = dbFactory.newDocumentBuilder();
           Document doc = dBuilder.parse(xmlFile);
           doc.getDocumentElement().normalize();

           // delete element
           deleteElement(doc, aKategorie);

           // write the updated document to file or console
           doc.getDocumentElement().normalize();
           TransformerFactory transformerFactory = TransformerFactory.newInstance();
           Transformer transformer = transformerFactory.newTransformer();
           DOMSource source = new DOMSource(doc);
           // StreamResult result = new StreamResult(new File("employee_updated.xml"));
           StreamResult result = new StreamResult(new File(MainFrame.datenpfad + "\\kategorien.xml"));
           transformer.setOutputProperty(OutputKeys.INDENT, "yes");
           transformer.transform(source, result);
           System.out.println("XML file updated successfully");

       } catch (Exception e1) {
           e1.printStackTrace();
       }
```


----------



## mrBrown (21. Apr 2018)

Code bitte in Code-Tags: 
[code=java]//dein Code[/code]


----------



## navino (23. Apr 2018)

Keiner eine Idee?


----------



## Flown (23. Apr 2018)

Poste mal doch die XML hier und dann noch deine delete Methode, damit man das auch mal ausführen kann.


----------



## navino (23. Apr 2018)

```
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<kategorien>
  <kategorie>
    <id>1</id>
   <name>Backen</name>
  </kategorie>
  <kategorie>
    <id>2</id>
   <name>Kochen12</name>
  </kategorie>
</kategorien>
```


```
@Override
   public void deleteKategorie(Kategorie aKategorie) {
       Document doc = this.getDocument();
       try {

           doc.getDocumentElement().normalize();
           // delete element
           deleteElement(doc, aKategorie);

           this.writeDocument(doc);

       } catch (Exception e1) {
           e1.printStackTrace();
       }
   }




private static void deleteElement(Document doc, Kategorie aKategorie) {
        NodeList kategorie = doc.getElementsByTagName("kategorie");
        Element element = null;
        // loop for each employee
        for (int i = 0; i < kategorie.getLength(); i++) {

            element = (Element) kategorie.item(i);
            Node id = element.getElementsByTagName("id").item(0).getFirstChild();
            if (aKategorie.getId() == Integer.valueOf(id.getNodeValue())) {
                element.getParentNode().removeChild(element);
            }

        }
        doc.normalize();

    }
```


----------



## Flown (24. Apr 2018)

Ich kann das leider nicht reproduzieren, der Output ist wie erwartet.


----------



## navino (24. Apr 2018)

Wenn du meinen Sourcecode verwendest ist nach dem Löschen eine Leerzeile drin


----------



## Flown (24. Apr 2018)

Nein es ist ordentlich formatiert.


----------

