如何使用JDOM删除XML节点?

时间:2015-05-06 09:54:43

标签: java 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() ); 
}

我需要在保存变量中的值之后删除节点,我该怎么办?

1 个答案:

答案 0 :(得分:1)

“删除”节点有几个不同的含义。您可以从内存中的JDOM模型中删除该节点,此外,您可以在没有该节点的情况下覆盖磁盘上的文件,以保存修改后的文档。

要从XML文档中删除节点,请“分离”它:

prepareForSegue

分离..... String caus = tabla.getChildTextTrim("Causa"); tabla.detach(); 元素后,它将不再是内存文档的一部分,但您仍然可以将tabla作为XML的“片段”引用。

如果要将修改后的文档保存回文件,则需要将XML写回文件:

tabla

此外,你真的应该使用JDOM 2.x,其中泛型将有助于使你的代码更整洁:

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