gpt4 book ai didi

java - 如何使用 JDOM 删除 XML 节点?

转载 作者:行者123 更新时间:2023-12-01 11:35:11 26 4
gpt4 key购买 nike

这是我的代码:

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() );
}

我需要在变量中保存值后立即删除节点,我该怎么做?

最佳答案

“删除”节点有几个不同的含义。您可以从内存中的 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() );
}

关于java - 如何使用 JDOM 删除 XML 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com