2015-05-06 3 views
0

Вот мой код:Как удалить узел XML с помощью JDOM?

try 
{ 
    Document fichero = (Document) builder.build(xmlFile); 
    Element rootNode = fichero.getRootElement(); 
    List list = rootNode.getChildren("fichada"); 
    for (int i = 0; i < list.size(); i++) 
    { 
     Element tabla = (Element) list.get(i); 
     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 NODE 
    } 
} catch (IOException io) { 
    System.out.println(io.getMessage()); 
} catch (JDOMException jdomex) { 
    System.out.println(jdomex.getMessage()); 
} 

Мне нужно удалить узел сразу после сохранения значений в переменных, как я могу это сделать?

+0

Когда вы отправляете свой код в StackOverflow, не используйте имена, отличные от английского, потому что это делает код более трудным для чтения. – gvlasov

+0

Вы хотите удалить какой-либо конкретный узел или дочерний узел какого-либо родителя? Дайте больше информации. – OO7

+0

Да, фактический узел в каждый момент, когда я нахожусь в loo – marcss

ответ

1

«Удаление» узла имеет пару различных значений. Вы можете удалить узел из модели JDOM в памяти, и, кроме того, вы можете перезаписать файл на диске без узла, чтобы сохранить измененный документ.

Чтобы удалить узел из документа XML, вы «отделяться» его:

..... 
String caus = tabla.getChildTextTrim("Causa"); 
tabla.detach(); 

После отсоединения tabla элемента он больше не будет являться частью документа в памяти, но вы все равно можете ссылаться tabla как «фрагмент» XML.

Если вы хотите сохранить измененный документ обратно в файл, вам нужно будет написать XML обратно в файл:

try (FileOutputStream fos = new FileOutputStream(xmlfile)) { 
    XMLOutputter xmlout = new XMLOutputter(); 
    xmlout.output(fichero, fos); 
} 

Кроме того, вы действительно должны использовать JDOM 2.x где дженериков будет помогите сделать код более аккуратным:

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 NODE 
     tabla.detach(); 
    } 
} catch (IOException io) { 
    System.out.println(io.getMessage()); 
} catch (JDOMException jdomex) { 
    System.out.println(jdomex.getMessage()); 
} 
+0

Я сделал то, что вы сказали, но узел все еще находится в документе, и я не знаю, почему – marcss

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