我有问题。我有一个xml,我想删除一个特定的节点,并且我的代码,我可以看到它,作为System.out,我可以看到我的xml没有该节点,但后来,当我检查xml时,它仍然有节点。 我的代码:
public void borrarelemento(String id_elementoaborrar, String direccion) {
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
Document documento = documentBuilderFactory.newDocumentBuilder().parse(new File(direccion));
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
XPathExpression xPathExpression = xPath.compile("/tabla/elemento[id = " +id_elementoaborrar+" ]");
Node nodoaborrar=(Node) xPathExpression.evaluate(documento, XPathConstants.NODE);
nodoaborrar.getParentNode().removeChild(nodoaborrar);
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(documento), new StreamResult(System.out));
finish();
} catch (Exception e) {
e.printStackTrace();
}
}
其中direccion是xml的路径,而id_elementoaborrar是我想要删除的值。
我的xml:
<tabla>
Farolas
<elemento>
<id> 001 </id>
<nombre_elemento> Farola1 </nombre_elemento>
<atributos>
<atributo>
<nombre_atributo>Día reparación</nombre_atributo>
<tipo>Fecha</tipo>
<valor>23/04/2017</valor>
<mostrar>No</mostrar>
<id_elemento>001</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Costo unidad</nombre_atributo>
<tipo>Numérico con decimales</tipo>
<valor>2.5</valor>
<mostrar>No</mostrar>
<id_elemento>001</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Cantidad</nombre_atributo>
<tipo>Numérico sin decimales</tipo>
<valor>1</valor>
<mostrar>Sí</mostrar>
<id_elemento>001</id_elemento>
</atributo>
</atributos>
</elemento>
<elemento>
<id> 002 </id>
<nombre_elemento> Farola2 </nombre_elemento>
<atributos>
<atributo>
<nombre_atributo>Día reparación</nombre_atributo>
<tipo>Fecha</tipo>
<valor>11-05-2017</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Costo unidad</nombre_atributo>
<tipo>Numérico con decimales</tipo>
<valor>4.5</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Cantidad</nombre_atributo>
<tipo>Numérico sin decimales</tipo>
<valor>3</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Descripción</nombre_atributo>
<tipo>Texto</tipo>
<valor>Farola de la calle mayor de Valdeluz</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Coordenadas de la farola</nombre_atributo>
<tipo>Coordenadas</tipo>
<valor>(40.541,-3.27521)</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Foto de la farola</nombre_atributo>
<tipo>Foto</tipo>
<valor>sd/Farola1</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Día segunda reparación</nombre_atributo>
<tipo>Fecha-hora</tipo>
<valor>12-05-2017 11:21:54</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Día tercera reparación</nombre_atributo>
<tipo>Fecha-hora</tipo>
<valor>12-05-2017 11:58:11</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Día cuarta reparación</nombre_atributo>
<tipo>Fecha-hora</tipo>
<valor>12-05-2017 12:32:42</valor>
<mostrar>No</mostrar>
<id_elemento>002</id_elemento>
</atributo>
</atributos>
</elemento>
<elemento>
<id> 003 </id>
<nombre_elemento> Farola3 </nombre_elemento>
<atributos>
<atributo>
<nombre_atributo>Día montaje</nombre_atributo>
<tipo>Fecha</tipo>
<valor>15/05/2017</valor>
<mostrar>No</mostrar>
<id_elemento>003</id_elemento>
</atributo>
<atributo>
<nombre_atributo>Costo</nombre_atributo>
<tipo>Numérico con decimales</tipo>
<valor>40</valor>
<mostrar>No</mostrar>
<id_elemento>003</id_elemento>
</atributo>
</atributos>
</elemento>
</tabla>
答案 0 :(得分:0)
好的,已经找到了答案,我做错了,而不是这个:
transformer.transform(new DOMSource(documento), new StreamResult(System.out));
我应该这样说:
transformer.transform(new DOMSource(documento), new StreamResult(direccion));