2017-05-15 17 views
0

私は問題があります。私は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

[OK]を、すでに私はこれに代えて、それが間違っていた、その答えを見つけました:

transformer.transform(new DOMSource(documento), new StreamResult(direccion)); 
:私はこの入れているはずです
transformer.transform(new DOMSource(documento), new StreamResult(System.out)); 

関連する問題