2015-05-07 2 views
0

Вот мой код:удалить предыдущий узел в Java с помощью JDOM

SAXBuilder builder = new SAXBuilder(); 
File xmlFile = new File("fichadas.xml"); 
try 
{ 
    Document fichero = (Document) builder.build(xmlFile); 
    Element rootNode = fichero.getRootElement(); 
    for (Element tabla : rootNode.getChildren("fichada")) { 
     String term = tabla.getChildTextTrim("N_Terminal"); 
     String tarj = tabla.getChildTextTrim("Tarjeta"); 
     String fech = tabla.getChildTextTrim("Fecha"); 
     String horaEnXML = tabla.getChildTextTrim("Hora"); 
     String caus = tabla.getChildTextTrim("Causa");  

     //HERE I WANT TO DELETE THE PREVIOUS NODE NOT THE ACTUAL 
     tabla.detach(); 

    } 
    //OVERWRITING THE DOCUMENT 
    try (FileOutputStream fos = new FileOutputStream("fichadas.xml")) { 
     XMLOutputter xmlout = new XMLOutputter(); 
     xmlout.output(fichero, fos); 
    } 
} catch (IOException io) { 
    System.out.println(io.getMessage()); 
} catch (JDOMException jdomex) { 
    System.out.println(jdomex.getMessage()); 
} 

У меня есть некоторые проблемы, я думаю, что если я сделал отсоединение от фактического узла я не могу перейти к следующему, то Я пытаюсь найти способ удалить предыдущий узел и удалить и просить цикл, как я могу это сделать?

+0

Примечания дублировать близкие избиратель ... две вещи, теперь это использование API JDOM 2.x и имеет и другие отличия, которые значительны. – rolfl

ответ

1

JDOM 2.x полностью совместим с API коллекций и, если вы хотите удалить элементы во время или после того, как вы их пропустили, у вас есть несколько вариантов.

Сначала это итератор, вызывая метод remove() во время итерации ....

for (Iterator<Element> tabit = rootNode.getChildren("fichada").iterator(); 
     tabit.hasNext();) { 

    Element tabla = tabit.next(); 
    // safely remove one-at-a-time from the document. 
    tabit.remove(); 
    ...... 

} 

// write the modified document back to disk. 
.... 

В качестве альтернативы, вы можете очистить список узлов для удаления:

Document fichero = (Document) builder.build(xmlFile); 
Element rootNode = fichero.getRootElement(); 
List<Element> toProcess = rootNode.getChildren("fichada"); 

for (Element tabla : toProcess) { 
    ..... 
} 
// remove all processed nodes from the in-memory document. 
toProcess.clear(); 

// write the modified document back to disk. 
.... 
+0

Это решило мою проблему, спасибо помощнику! – marcss

Смежные вопросы