2016-04-07 24 views
0

Herkese selam :) Java ve XML ile ilgili bir sorunum var.Java XML silme Öğe yaş> 30

Çeşitli yaş gruplarına sahip bazı futbol oyuncuları içeren bir XML dosyam var ve yalnızca 30 yaşın üzerindeki oyuncuyu silmek istiyorum.

try { 
     File inputFile = new File("src/players.xml"); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(inputFile); 


     System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); 
     NodeList nList = doc.getElementsByTagName("player"); 
     System.out.println("----------------------------"); 


     for (int temp = 0; temp < nList.getLength(); temp++) { 
      Node nNode = nList.item(temp); 
      System.out.println("\nCurrent Element :" + nNode.getNodeName()); 

      if (nNode.getNodeType() == Node.ELEMENT_NODE) {  

       Element eElement = (Element) nNode; 


       int ageNumber = Integer.parseInt(eElement.getElementsByTagName("age").item(0).getTextContent()); 

       if(ageNumber > 30) { 
        temp--; 
        eElement.getParentNode().removeChild(eElement); 
        doc.normalize(); 
        } 

       System.out.println("ID : " + eElement 
        .getElementsByTagName("id") 
        .item(0) 
        .getTextContent()); 

       System.out.println("First Name : " 
         + eElement 
         .getElementsByTagName("firstName") 
         .item(0) 
         .getTextContent()); 

       System.out.println("Last Name : " 
       + eElement 
        .getElementsByTagName("lastName") 
        .item(0) 
        .getTextContent()); 

       System.out.println("Age : " 
       + eElement 
        .getElementsByTagName("age") 
        .item(0) 
        .getTextContent()); 

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

Ama programı doesnt> 30.

Herkes bana lütfen yardımcı olabilir yaşla birlikte eleman silin:

Ve bu benim Java Kaynak nedir?

+1

Ne demek "çalışmıyor". sorun ne? Çalışma zamanı problemi? Derleme problemi mi? – chrisl08

+0

Program, oynatıcının listesini gösterir, ancak eski oyuncuları 30 yıldan fazla silmez. –

+0

Örnek bir XML dosyası sağlayabilir misiniz? –

cevap

0

DOM koleksiyonları yayındadır; bu nedenle, koleksiyon üzerinde yineleme yapılırken öğeleri kaldırmaya çalışırken koleksiyonun sonunda güvenli bir şekilde yapılır. for (int temp = 0; temp < nList.getLength(); temp++) { değerini for (int temp = nList.getLength() - 1; temp >= 0 ; temp--) { olarak değiştirin.

Ve tabii değişiklikler kalıcı olması geri bir dosyaya tefrika edilmesi gerekmektedir doc belge

, bunlardan birini varsayılan Transformer veya bunun için LSSerializer kullanabilirsiniz.