# Nach einem Attribut suchen und dann löschen



## huja (15. Feb 2005)

Hallo, versuche vergebens nach einem Attribut in einer XML Datei zu suchen und den entsprechenden Datensatz zu löschen. Ich bekomme immer die Fehlermeldung:

```
java.lang.NullPointerException
        at DOM5.knotenSuchen(DOM5.java:276)
        at DOM5.loeschen(DOM5.java:295)
        at DOM5.actionPerformed(DOM5.java:382)
        at java.awt.List.processActionEvent(List.java:1070)
        at java.awt.List.processEvent(List.java:1006)
        at java.awt.Component.dispatchEventImpl(Component.java:3615)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
```

------------------Die Methode Suchen und Löschen sieht wie folgt aus:

```
Node knotenSuchen(String name)
  {
    NodeList nl = doc.getElementsByTagName("produkt");

    for(int i = 0; i < nl.getLength(); i++)
    
      if(nl.item(i).getFirstChild().getNodeValue().equals(name)){
          System.out.println(nl.item(i));
          return(nl.item(i));}
      else
          System.out.println(nl.item(i).getFirstChild().getNodeValue());
    
    
    System.out.println("Produkt nicht gefunden\n");
    return(null);
    
  }

  
  void loeschen()
  {
    System.out.println("\nLoeschen des Datensatz");
    System.out.println("==============================\n");
    String name = ""+listAuswahlLoeschen;
    System.out.println(name +"Dies ist der gesucht name");
    Node nodeName = knotenSuchen(name);
    if(nodeName != null)
    {
      Node nodeSchriftsteller = nodeName.getParentNode();
      nodeSchriftsteller.getParentNode().removeChild(nodeSchriftsteller);
    }
    else
        System.out.println("kein zu löschenden Datensatz gefunden");
   }
```


----------



## bambi (15. Feb 2005)

Das Kapitel ueber XML in "Java ist auch eine Insel" ist ganz interessant. Kannst es Dir ja mal ansehen...

http://www.galileocomputing.de/openbook/javainsel4/javainsel_13_003.htm


----------



## KSG9|sebastian (16. Feb 2005)

wie ist die struktur deiner xml datei?

du musst auch die ChildNodes überprüfen!


----------



## Bleiglanz (16. Feb 2005)

```
nl.item(i).getFirstChild().getNodeValue().equals(name))
```
kleiner Tipp aus dem Alltag:Solches Verketten von Methodenaufrufen ist zwar praktisch und oft leichter lesbar, aber wenn du irgendwo in der Verkettung

```
y=x.foo().bar().tutti().totto().getKaese().nochmal();
```
eine NPE einfängst, ist die Fehlersuche ohne Debugger fast unmöglich; bei dir könnte z.B.

item(i) kein Kind haben


----------

